Testing a claim at Risch algorithm

Claim

edit
For example, of all known programs, only Axiom[citation needed] can find an elementary antiderivative for the following:
 

The following is a more complex example, which no software (as of March 2008) is known to find an antiderivative for:

 

I have also added the results of third integral, taken from [Davenport and Trager 1985]:

 

Summary of Results

edit
CAS First Second Third
Axiom Yes No Yes
Eigenmath No No No
FriCAS Yes No Yes*
Maple Nonelementary No Yes
Mathcad ? ? ?
Mathematica Nonelementary No Yes*
Maxima No No Yes*
Reduce No No Yes*
SageMath No segfault Yes*
SpaceTime No No ?
SymPy No Yes Yes*
WIRIS No No Yes*
Yacas No No ?

* Eliminates the singularity at  

Detailed results

edit

Axiom (version: March 2009)

edit
integrate(x/sqrt(x**4+10*x**2-96*x-71), x)

Succeeds in finding an elementary antiderivative

integrate((x**2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x)

Fails with an error

Eigenmath (version: unnamed 2023)

edit
x/sqrt(x^4+10*x^2-96*x-71)
integral

Fails with "Stop: integral: no solution found"

(x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x))))
integral

Fails with "Stop: integral: no solution found"

FriCAS (version: 2022)

edit
integrate(x/sqrt(x^4+10*x^2-96*x-71), x)

Succeeds in finding an elementary antiderivative

integrate((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x)

Fails with error "implementation incomplete (constant residues)"

integrate(exp(x+10*log(x)), x)

Succeeds (but removes singularity)

Maple (version: 13)

edit
int(x/sqrt(x^4+10*x^2-96*x-71),x);

Output: contains EllipticF and EllipticPi (these functions are non-elementary)

int((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))),x);

Output: Same integral.

int(exp(x+10*log(x)),x);

Output: correct answer found

Mathematica (version: 7)

edit
Integrate[x/Sqrt[x^4 + 10 x^2 - 96 x - 71], x]

Finds (long) nonelementary antiderivative

Integrate[(x^2 + 2 x + 1 + (3 x + 1) Sqrt[x + Log[x]])/(x Sqrt[x + Log[x]] (x + Sqrt[x + Log[x]])), x]

Returns integral in symbolic form

Maxima (version: 5.45.1, 2021)

edit

Note from the help file for the command risch:

Integrates expr with respect to x using the transcendental case of the Risch algorithm. (The algebraic case of the Risch algorithm has not been implemented.) This currently handles the cases of nested exponentials and logarithms which the main part of integrate can't do. integrate will automatically apply risch if given these cases.
integrate(x/sqrt(x^4+10*x^2-96*x-71), x);

Returns integral in symbolic form

risch(x/sqrt(x^4+10*x^2-96*x-71), x);

Returns integral in symbolic form

integrate((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x);

Returns a result in terms of two integrals

risch((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x);

Returns a result in terms of an integral

Reduce (revision 6550, 2023)

edit
int(x/sqrt(x^4+10*x^2-96*x-71), x);

Returns a result in terms of two integrals

int((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x);

Returns a result in terms of three integrals

Sage (version: 9.8, 2023)

edit
integral(x/sqrt(x^4+10*x^2-96*x-71), x)

Returns integral in symbolic form

integral((x^2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x)

Segmentation fault

SpaceTime (version: 3.0)

edit
∫(x/√(x^4+10*x^2-96*x-71), x)

Returns integral in symbolic form

∫((x^2+2*x+1+(3*x+1)*√(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x)

Returns a result in terms of three integrals

SymPy (version: 1.11.1, 2022)

edit
x = Symbol('x')
integrate(x/sqrt(x**4+10*x**2-96*x-71), x)

Returns integral in symbolic form

integrate((x**2+2*x+1+(3*x+1)*sqrt(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x)))), x)

Succeeds in finding an elementary antiderivative

WIRIS CAS

edit
(x^2+2*x+1+(3*x+1)*√(x+log(x)))/(x*sqrt(x+log(x))*(x+sqrt(x+log(x))))

Fails with "Error 0, general error: The operator is binary."

Yacas

edit
Integrate(x)x/(x^4+10*x^2-96*x-71)^(1/2);

Returns integral in symbolic form

Integrate(x)(x^2+2*x+1+(3*x+1)*(x+Ln(x))^(1/2))/(x*(x+Ln(x))^(1/2)*(x+(x+Ln(x))^(1/2)))

Returns integral in symbolic form

Other CAS

edit
  • CASSIOPEIA uses Maple to antidifferentiate
  • Derive was replaced by TI-Nspire
  • Euler uses Maxima to antidifferentiate
  • FriCAS is an Axiom fork
  • GUYacas uses Ycas to antidifferentiate
  • Macsyma was replaced by Maxima
  • MuPAD is included in MATLAB
  • OpenAxiom is an Axiom fork
  • Symbolic Math Toolbox uses MAPLE to antidifferentiate
  • SympyCore is a research version of SymPy
  • Xcas uses Ycas to antidifferentiate
  • Entries from Comparison of computer algebra systems that could not be located: MAS, SymbolicC++
  • CAS that have not been listed (but can probably integrate): ClassPad Manager, MathXpert, TI-Nspire CAS
  • CAS that have not been listed (and probably can't integrate usefully): Magma (polynomials only), Mathomatic (polynomials only), meditor (integrates rational functions only), PARI/GP (integrates rational functions only)
  • CAS that have not been listed (and probably can't integrate): Algebrator, bergman, Cadabra, DoCon, DCAS, Fermat, Franklin Math, GAP, GiNaC, JACAL, JAS, LiveMath, Macaulay, MathEclipse, MuMATH, SINGULAR, TRIP