mapml Library

mapml GitHub repository


Next: 

Software library for exact matrix polynomials and polynomial matrices using PML from Maple

mapml is an experimental maple interface to the C++ library pml (branch "with-configure"). See [Hyun, Neiger, Schost 2019]

Problem and bug reports may be sent to gilles.villard@ens-lyon.fr


Next: , Up: Top

Installing

Currently developed and tested with macOS >= 15.5, typically, and the compiler

      # clang version 17.0.0 (clang-1700.0.13.3) 
      # Target: arm64-apple-darwin24.4.0      

Should operate more generally.

Mandatory libraries for pml/mapml:

(currently tested with:)

- GNU MP (6.3.0): http://gmplib.org

- For FLINT: MPFR (4.2.2): http://www.mpfr.org

- FLINT (3.2.1, or master branch): https://flintlib.org. Currently, pml+mapml requires building FLINT with support for AVX2 or NEON instructions.

PML Installation

Direct download: pml-with-configure.zip

or clone or .zip from the git branch branch "with-configure" of pml

Go to the directory pml-with-configure:

      ./autogen.sh
      ./configure
      make
      make install    

If gmp or flint are installed under non-standard directories you can specify their locations by using configure with the options --with-gmp, --with-flint. By default, make install installs files under /usr/local, you can specify another installation directory by giving ./configure the option --prefix=dirname. Run ./configure --help for further details.

Another example:

      ./autogen.sh --with-gmp=/opt/homebrew --with-flint=/usr/local CFLAGS="-Wall -O3 -march=native" 
      make
      sudo make install 
      make check  

PML+MAPML Installation (maple mandatory)

Do the above, specifying at the same time the maple directories in order to find maple include directory and maple library:

      ./autogen.sh --with-maplec=/Library/Frameworks/Maple.framework/Versions/2025/extern \
        --with-maplelib=/Library/Frameworks/Maple.framework/Versions/2025/bin.APPLE_ARM64_MACOS 
      ./configure
      make
      make install    

Another example:

      ./autogen.sh --with-gmp=/opt/homebrew \
        --with-maplec=/Library/Frameworks/Maple.framework/Versions/2025/extern \
        --with-maplelib=/Library/Frameworks/Maple.framework/Versions/2025/bin.APPLE_ARM64_MACOS 
      make
      sudo make install 

Using

mapml routines are then available by reading from maple the file mapml.mpl found in the mapml include directory determined by mapml installation (see --prefix). The default is:

      read("/usr/local/include/pml/mapml.mpl");

For example, see the maple worksheet Maple_check.mw from the pml-with-configure directory. By specifying an appropriate directory for the mapml.mpl file, it should execute correctly.

 


Next: , Previous: Installing, Up: Top

Available routines

Routines to manipulate matrices with univariate polynomial entries in Maple, in line with the LinearAlgebra package. Currently, these routines are global (not private to the mapml module).

    pmDeterminant(A, x) mod q;

    pmWeakPopov(A, x, shift) mod q; 
        unimodular column transformation, shift is a list of integers, of length the row dimension of A 

    pmRowWeakPopov(A, x, shift) mod q; 
        unimodular row transformation, shift is a list of integers, of length the column dimension of A 

    pmPMBasis(A, x, shift, sigma) mod q; 
        approximant basis B and resulting defects such that A.B has order at lest sigma 
        shift is a list of integers, of length the column dimension of A 
    
    pmRowPMBasis(A, x, shift, sigma) mod q; 
        approximant basis B and resulting defects such that B.A has order at lest sigma 
        shift is a list of integers, of length the row dimension of A 

    pmMBasis(A, x, shift, sigma) mod q; 
        approximant basis B and resulting defects such that A.B has order at lest sigma 
        shift is a list of integers, of length the column dimension of A 
    
    pmMBasis(A, x, shift, sigma) mod q; 
        approximant basis B and resulting defects such that B.A has order at lest sigma 
        shift is a list of integers, of length the row dimension of A 

 


Previous: Available routines, Up: Top

Known issues

 


Valid XHTML 1.0 Strict