Repository navigation
Special integral functions? #1469
Description
Activity
Agreed, and the sentence you quote was about what
int cosh(x)^p dxis, not about what we should be willing to print: for a fractionalpit is an incomplete elliptic integral of the second kind, and the rule in #1467 answers the combinations where the elliptic part cancels. Where it does not cancel, anE(phi | m)is the honest answer and unevaluated is a worse one. So the question is not whether, but which functions, in what order, and against which test.What the corpus says the order is. Rubi's family 8, which we do not run at all today, is 1949 problems in ten files:
file problems needs 8.9 Product logarithm 398 W(x)8.1 Error functions 311 erf,erfc,erfi8.6 Gamma functions 233 Gamma(a, x),gamma(a, x),logGamma8.2 Fresnel integrals 218 S(x),C(x)8.3 Exponential integrals 208 Ei(n, x),Ei(x),li(x)8.8 Polylogarithm 198 Li_n(x)8.4 Trig integrals 136 Si,Ci,Shi,Chi8.5 Hyperbolic integrals 136 the same four 8.10 Formal derivatives 97 nothing new 8.7 Zeta 14 zeta(s)That is a different shape from what I expected: the product logarithm and the error function carry more of the corpus than the exponential integral does, and
Si/Ci/Shi/Chishare a file each way for 272 together. It also means the first tranche that pays iserf/erfc/erfiplusEi/liand the four trigonometric-integral functions — about 655 problems — whileW, the polylogarithms and the gamma family are each their own piece of work.Three things I would want settled before the first one lands, because they are what makes the difference between a function and a symbol we print:
- A function is its definition, not its notation. Each needs a branch convention written down where the code can be checked against it (
Ei(x)as the Cauchy principal value forx > 0;li(x) = Ei(ln x)with the same cut;erfi(x) = -i erf(i x)exactly, not as a separate series), and a numerical evaluation that agrees with it. Without the numeric side,Integratestarts returning answers thatEvalNumericalcannot check, and our own corpus harness grades them Unverifiable — we would be adding answers the suite cannot defend. - Differentiation and the derivative-back check come first. Every one of these is defined by its derivative, so
d/dx Ei(x) = e^x/xand friends are what make the 97 problems of 8.10 free and what letspropcheckandintbenchverify everything else. That is the cheapest possible first commit and I would put it before any integration rule. - The decline rule stays. "Not answering is a legitimate answer; answering wrongly is not" does not weaken here:
int e^(x^2) dxbecomingsqrt(pi) erfi(x)/2is right, but a rule that reaches for a special function whenever the elementary search fails will start printing them for integrands whose antiderivative is elementary and merely not found yet. The guard I would want is that a special-function answer is only produced by a rule that names the identity it is using, never by a fallback.
If that reading matches your intent I will open a Goal for the first tranche (
erffamily,Ei/li,Si/Ci/Shi/Chi) with the definitions, the numerical evaluation and the derivatives as its first children, and wire family 8 into the corpus harness so the number is visible from the start — today it is 1949 problems we silently do not count. #809 already surveyed the neighbouring gap (the eight functions that are refused by name today,erfamong them), so the two would want to be read together.- A function is its definition, not its notation. Each needs a branch convention written down where the code can be checked against it (
These all seem correct. Implementing these before v3 (2.8) might allow some repeating architectural patterns or duplicate implementations or more efficient processing that better pass through these function nodes to be exposed.
A correction to my comment above: the derivatives don't make 8.10's 97 formal-derivative problems free. Those problems integrate undefined functions, such as
Derivative(1)(f)(x)/f(x)tolog(f(x)), and none of them mentions a special function. They needf(x)as a function in its own right, so #1501 leaves them out.- added a parent issue
on Sep 30, 2026
#1467 asserts that
But we don't have to limit ourselves to elementary antiderivatives. We can introduce the functions of https://mpmath.org/doc/current/functions/expintegrals.html and have special integral functions too!