Section: Research Program
Studying special functions by computer algebra
Computer algebra manipulates symbolic representations of exact mathematical objects in a computer, in order to perform computations and operations like simplifying expressions and solving equations for “closedform expressions”. The manipulations are often fundamentally of algebraic nature, even when the ultimate goal is analytic. The issue of efficiency is a particular one in computer algebra, owing to the extreme swell of the intermediate values during calculations.
Our view on the domain is that research on the algorithmic manipulation of special functions is anchored between two paradigms:
It aims at four kinds of algorithmic goals:
This interacts with three domains of research:

computer algebra, meant as the search for quasioptimal algorithms for exact algebraic objects,

experimental mathematics (combinatorics, mathematical physics, ...).
This view is made explicit in the present section.
Equations as a data structure
Numerous special functions satisfy linear differential and/or recurrence equations. Under a mild technical condition, the existence of such equations induces a finiteness property that makes the main properties of the functions decidable. We thus speak of Dfinite functions. For example, 60 % of the chapters in the handbook [15] describe Dfinite functions. In addition, the class is closed under a rich set of algebraic operations. This makes linear functional equations just the right data structure to encode and manipulate special functions. The power of this representation was observed in the early 1990s [69] , leading to the design of many algorithms in computer algebra. Both on the theoretical and algorithmic sides, the study of Dfinite functions shares much with neighbouring mathematical domains: differential algebra, Dmodule theory, differential Galois theory, as well as their counterparts for recurrence equations.
Algorithms combining functions
Differential/recurrence equations that define special functions can be recombined [69] to define: additions and products of special functions; compositions of special functions; integrals and sums involving special functions. Zeilberger's fast algorithm for obtaining recurrences satisfied by parametrised binomial sums was developed in the early 1990s already [70] . It is the basis of all modern definite summation and integration algorithms. The theory was made fully rigorous and algorithmic in later works, mostly by a group in Risc (Linz, Austria) and by members of the team [58] , [66] , [34] , [32] , [33] , [52] . The past ÉPI Algorithms contributed several implementations (gfun [61] , Mgfun [34] ).
Solving functional equations
Encoding special functions as defining linear functional equations postpones some of the difficulty of the problems to a delayed solving of equations. But at the same time, solving (for special classes of functions) is a subtask of many algorithms on special functions, especially so when solving in terms of polynomial or rational functions. A lot of work has been done in this direction in the 1990s; more intensively since the 2000s, solving differential and recurrence equations in terms of special functions has also been investigated.
Multiprecision numerical evaluation
A major conceptual and algorithmic difference exists for numerical calculations between data structures that fit on a machine word and data structures of arbitrary length, that is, multiprecision arithmetic. When multiprecision floatingpoint numbers became available, early works on the evaluation of special functions were just promising that “most” digits in the output were correct, and performed by heuristically increasing precision during intermediate calculations, without intended rigour. The original theory has evolved in a twofold way since the 1990s: by making computable all constants hidden in asymptotic approximations, it became possible to guarantee a prescribed absolute precision; by employing stateoftheart algorithms on polynomials, matrices, etc, it became possible to have evaluation algorithms in a time complexity that is linear in the output size, with a constant that is not more than a few units. On the implementation side, several original works exist, one of which (NumGfun [57] ) is used in our DDMF.
Guessing heuristics
“Differential approximation”, or “Guessing”, is an operation to get an ODE likely to be satisfied by a given approximate series expansion of an unknown function. This has been used at least since the 1970s and is a key stone in spectacular applications in experimental mathematics [30] . All this is based on subtle algorithms for Hermite–Padé approximants [19] . Moreover, guessing can at times be complemented by proven quantitative results that turn the heuristics into an algorithm [27] . This is a promising algorithmic approach that deserves more attention than it has received so far.
Complexitydriven design of algorithms
The main concern of computer algebra has long been to prove the feasibility of a given problem, that is, to show the existence of an algorithmic solution for it. However, with the advent of faster and faster computers, complexity results have ceased to be of theoretical interest only. Nowadays, a large track of works in computer algebra is interested in developing fast algorithms, with time complexity as close as possible to linear in their output size. After most of the more pervasive objects like integers, polynomials, and matrices have been endowed with fast algorithms for the main operations on them [39] , the community, including ourselves, started to turn its attention to differential and recurrence objects in the 2000s. The subject is still not as developed as in the commutative case, and a major challenge remains to understand the combinatorics behind summation and integration. On the methodological side, several paradigms occur repeatedly in fast algorithms: “divide and conquer” to balance calculations, “evaluation and interpolation” to avoid intermediate swell of data, etc. [24] .