I have reported some work to implement support for the integration of special
functions.
In a first step I tried to generalize SININT to get results for the Exponential
Integral Ei. It works nicely. Here is a collection of integrals which Maxima can
solve with some extensions to the code:
The first integral is a generalization for exp(x)/x. This integral is necessary
to get all results below.
(%i4) integrate(exp(b+a*x)/x,x)
(%o4) %e^b*expintegral_ei(a*x)
These are results for the function expintegral_ei:
(%i5) integrate(expintegral_ei(x),x)
(%o5) x*expintegral_ei(x)-%e^x
(%i6) integrate(expintegral_ei(a*x),x)
(%o6) (a*x*expintegral_ei(a*x)-%e^(a*x))/a
(%i7) integrate(expintegral_ei(b+a*x),x)
(%o7) ((a*x+b)*expintegral_ei(a*x+b)-%e^(a*x+b))/a
(%i8) integrate(x*expintegral_ei(x),x)
(%o8) x^2*expintegral_ei(x)/2-(x-1)*%e^x/2
(%i9) integrate(exp(a*x)*expintegral_ei(a*x)/x,x)
(%o9) expintegral_ei(a*x)^2/2
(%i10) integrate(log(b*x)*expintegral_ei(a*x),x)
(%o10) (a*x*expintegral_ei(a*x)-%e^(a*x))*log(b*x)/a
-(a*x*expintegral_ei(a*x)-expintegral_ei(a*x)-%e^(a*x))/a
(%i11) integrate(expintegral_ei(x^2),x)
(%o11) x*expintegral_ei(x^2)+sqrt(%pi)*%i*erf(%i*x)
(%i12) integrate(sqrt(x)*expintegral_ei(x),x)
(%o12) 2*(x^(3/2)*expintegral_ei(x)/3-2*(sqrt(x)*%e^x/2
+sqrt(%pi)*%i*erf(%i*sqrt(x))/4)
/3)
In a next step I would like to generalize the code even more. Than it would be
possible to implement more special functions.
I have not looked into the code of RISCHINT. I do not know if it would be better
to do some extensions to RISCHINT too. Some of the integrals above use in parts
the alogrithm of RISCHINT.
What do you think, should we extend SININT and implement the support for the
integration of special functions?
Dieter Kaiser