Numerical Evaluation of D-Finite Functions for ore_algebra

This is the home page for the -analytic development branch of ore_algebra , an implementation of Ore algebras for the SageMath computer algebra system written by Manuel Kauers, Maximilian Jaroschek and Fredrik Johansson.

The -analytic branch extends ore_algebra with symbolic-numeric features such as 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. The branch also adds a few methods to univariate differential operators in order to make the main features of the submodule easily accessible.

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. A short introduction to the features most likely to be of interest to casual users can be found in this article.

Comments, bug reports and feature requests are always welcome.

Source Code

Starting with version 0.3 of ore_algebra, the analytic submodule is part of the ore_algebra package.

More recent development versions of the -analytic branch are available in a public git repository that you can clone with

    git clone


SageMath version 7.5 or later is recommended, though at least some features should work with earlier versions. No installation is required: just add the src/ directory from the ore_algebra source tree to your Python/Sage search path (or simply launch Sage from that directory) and import the classes or functions you want to use.

ore_algebra/src$ sage
│ SageMath version 7.3.beta3, Release Date: 2016-06-05               │
│ Type "notebook()" for the browser-based notebook interface.        │
│ Type "help()" for help.                                            │
┃ Warning: this is a prerelease version, and it may be unstable.     ┃
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.