Numerical Evaluation of D-Finite Functions for ore_algebra

This is the home page for the symbolic-numeric features being added to ore_algebra , an implementation of Ore algebras for the SageMath computer algebra system originally written by Manuel Kauers, Maximilian Jaroschek and Fredrik Johansson.

The symbolic-numeric features revolve around the computation of values of univariate D-finite functions and connection matrices between regular points of univariate differential operators. Most of the new code resides in a submodule called ore_algebra.analytic, but the main features are accessible via methods of univariate differential operators.

Please note that this software is intended both for “end users” interested in performing symbolic-numeric computations with D-finite functions, and as a playground for experimenting with algorithms doing such computations. As a consequence, some features may be undocumented and/or very experimental.

Source Code & Documentation


Depending on your Sage setup, you should be able to install the git master version using pip with the command

$ sage -pip install --user git+

or the analytic branch with

$ sage -pip install --user git+

See the relevant section of the Python Packaging User Guide for details.

I suggest running the analytic branch if you are mainly interested in the latest improvements to the numerical evaluation code, and the master branch otherwise.

As of ore_algebra 0.4, Sage version 8.7 or later is recommended, though some features should work with earlier versions. The tip of the analytic branch may require the latest stable release of Sage, and sometimes even the latest beta.

Using ore_algebra directly from a git clone

Here is a short example of how to test the package without installing it. See the Python and Cython documentation for more information.

$ cd ore_algebra
ore_algebra$ make build  # build compiled submodules (currently optional)
ore_algebra$ PYTHONPATH=src sage
│ SageMath version ..., Release Date: ...                            │
│ Using Python .... Type "help()" for help.                          │
sage: from ore_algebra import *
sage: DiffOps, x, Dx = DifferentialOperators()
sage: (Dx - 1).numerical_solution(ini=[1], path=[0,1])
[2.7182818284590452 +/- 3.66e-17]


This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.