Basic Examples (4) 
This is a well-known pseudo-elliptic integral:
Some integrals are expressed as a rational function of x and the radicals in the integrand:
Other integrals can be expressed in terms of Log, ArcTan and ArcTanh:
The following is an Abelian integral:
Scope (15) 
IntegrateAlgebraic can integrate all integrands in regardless of their size or complexity:
IntegrateAlgebraic can integrate all integrands in :
IntegrateAlgebraic can integrate all integrands in :
IntegrateAlgebraic can integrate all integrands in , as these are converted to rational functions via Euler’s substitution:
For the following integral, IntegrateAlgebraic uses the substitution to reduce the integral to :
For the following integral, IntegrateAlgebraic uses the substitution to reduce the integral to :
For the following integral, IntegrateAlgebraic uses the substitution to reduce the integral to :
Some integrals will introduce algebraic numbers that are not present in the integrand:
IntegrateAlgebraic works with radicals other than square roots:
Some integrals will be expressed in terms of RootSum expressions:
IntegrateAlgebraic can often work with parameters in the integrand:
IntegrateAlgebraic has a limited ability to integrate nested radicals:
IntegrateAlgebraic can succeed on some integrals where the Risch-Bronstein-Trager algorithm struggles:
IntegrateAlgebraic can handle many otherwise difficult integrals involving parameters:
IntegrateAlgebraic can handle many integrals when the radicand is a rational function:
Options (9) 
Expansion (2) 
The option "Expansion" → True specifies if the integrals is expanded and integrated term-by-term after exhausting all other possible methods. By default "Expansion" is False, as this method may require many time consuming recursive calls to IntegrateAlgebraic:
With "Expansion" → True, IntegrateAlgebraic may return partial results:
DegreeBound (2) 
The default for "DegreeBound" is 8:
Increasing the degree bound can solve some large Abelian integrals:
Elementary (1) 
"Elementary" specifies if the solution should be composed of elementary functions only. By default "Elementary" is True:
SingleStepTimeConstraint (1) 
The option "SingleStepTimeConstraint" specifies the time in seconds that IntegrateAlgebraic spends in various computationally-intensive routines. The default for "SingleStepTimeConstraint" is 0.25. Increasing this time constraint may solve some integrals that otherwise return unevaluated:
SubstitutionSize (2) 
The option "SubstitutionSize" determines the number of rational substitutions tried within IntegrateAlgebraic. By default "SubstitutionSize" is "Small". Other settings are "Medium" and "Large". By default, the Laurent polynomial substitution code considers a polynomial with 3 terms only:
With "SubstitutionSize"→"Medium", we use a Laurent polynomial substitution with 4 terms:
VerifySolutions (1) 
VerifySolutions numerically verifies the solution obtained by IntegrateAlgebraic. By default this is False. Verifying the solution will increase the runtime of IntegrateAlgebraic:
Applications (1) 
If the integral is continuous, then the definite integral can be computed using Newton–Leibniz:
Possible Issues (3) 
Some integrals will take longer than others:
Trager’s Hermite reduction will always find the rational (algebraic) part of the integral, whereas the methods used by IntegrateAlgebraic will sometimes fail:
IntegrateAlgebraic will fail to compute some algebraic integrals which possess elementary solutions:
Neat Examples (2) 
Some integrals require many logarithms (including ArcTan and ArcTanh):
Some integrals introduce complicated algebraic numbers: