Coder Social home page Coder Social logo

orcca-uwo / multivariatepowerseries Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 1.05 MB

This object-oriented Maple package provides functionalities for manipulating multivariate power series and univariate polynomials over such series at high speed and high precision.

License: GNU General Public License v3.0

Makefile 0.36% Objective-C++ 56.02% Scilab 39.17% JetBrains MPS 4.45%
maple lazy-evaluation power-series factorization object-oriented

multivariatepowerseries's Introduction

MultivariatePowerSeries

The MultivariatePowerSeries package, which is among new features of Maple 2021, is an object-oriented implementation of multivariate formal power series and univariate polynomials over such series (UPoPS).

This package is written in Maple and provides the ability to create and manipulate multivariate power series with rational or algebraic number coefficients, as well as UPoPS objects whose coefficients are multivariate power series. Through lazy evaluation techniques and a careful implementation, this package achieves high performance in comparison with software counterparts. These power series and UPoPS are employed in optimized implementations of Weierstrass Preparation Theorem and factorization of UPoPS via Hensel’s lemma.

This figure shows all methods in Maple:

MPS package

Installation Guide

This package is shipped with Maple 2021 and can be reached by with(MultivariatePowerSeries) command in Maple. However, for those using older versions of Maple, there is another way to install this manually as follows:

  1. Clone or Download this repository
  2. Go to the repository folder (i.e. cd ./MultivariatePowerSeries)
  3. Run make in your terminal
  4. Add libname := "/package/address", libname: to ~/.mapleinit

A successful installation creates a new file MultivariatePowerSeries.mla at the same directory. Note that /package/address is the complete path to where MultivariatePowerSeries.mla is located. To test or remove this package, run make test or make clean.

Package Structure

Both power series and UPoPS types are implemented as Maple classes and named, respectively,

The MultivariatePowerSeries package contains these two classes along with procedures to construct and manipulate objects of those classes. In fact, these additional procedures are used to "hide" the object-oriented nature of the library behind simple procedure calls. The code below shows an overview of this package.

MultivariatePowerSeries := module()
option package;
  local PowerSeriesObject,
      UnivariatePolynomialOverPowerSeriesObject;

  # create a power series:
  export PowerSeries := proc(...)

  # create a UPoPS:
  export UnivariatePolynomialOverPowerSeries := proc(...)
  
  # Additional procedures to interface these two classes

  module PowerSeriesObject() 
  option object;
    local hpoly :: Array,
          precision :: nonnegint,
          generator :: procedure;
    # other members and methods
  end module;

  module UnivariatePolynomialOverPowerSeriesObject()
  option object;
    local upoly :: Array, 
          vname :: name;
    # other members and methods
  end module;
end module;

Documentation

A complete documentation is available on Maple Online Help and here.

Examples

The Maple worksheet MPS-demo.mw is a demo of this package presenting examples such as,

  • creating PowerSeries objects from a polynomial or an anonymous function:

Example 1

  • decomposing a UPoPS object using Weierstrass Preparation Theorem:

Example 2

  • factoring a UPoPS object:

Example 3

Credit

This package is designed and developed by M. Asadi under the supervision of M. Moreno Maza and E. Postma follows the lazy evaluation scheme of multivariate power series in the BPAS library written in C language and implemented by A. Brandt, M. Kazemi, and M. Moreno Maza.

To cite this work, please use

@inproceedings{asadi2020MC,
  author = {Asadi, Mohammadali and 
      Brandt, Alexander and 
      Kazemi, Mahsa and 
      Moreno Maza, Marc and 
      Postma, Erik},
  title = {{M}ultivariate {P}ower {S}eries in {M}aple},
  booktitle = {Maple in Mathematics Education and Research},
  series = {Communications in Computer and Information Science},
  publisher = {Springer (accepted)},
  year = {2021}
}

multivariatepowerseries's People

Contributors

jgonza55 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.