I have finished a first part of the work on the Exponential Integrals and have
reported the results as a feature request on Sourceforge.net. I have attached
the code and a test file to this feature request. The test file contains most of
the tables of A&S with values for the Exponential Integrals E1, Ei, Si and Ci
with an precision of about 6 to 9 digits for real and complex arguments. I have
checked the numerical routines further with single values from Wolfram's
functions site.
The main routine is the numerical evalution of the Exponential Integrals En(z)
for a parameter n>-2 and a complex argument z. All other numerical routines uses
this routine. Because we evalute all Exponential Integrals for complex arguments
the complex phase factors are carefully implemented. In addition the
singularities for a zero argument are carefully implemented.
All tests pass within the desired accuracy.
The next steps I would like to do are:
1. Implementation of the finit power expansion for negative integer values of
the parameter.
2. Implementation of the finit power expansion for half integral values in terms
of the Error function Erfc (Maxima knows only the Error function Erf. I think we
should introduce the Error function Erfc too).
3. Extension of the numerical routine of the Exponential integral En(z) for a
complex parameter n.
4. Create a test file which works for the testsuite and add further tests.
5. Add further documentation to the code.
A bigger problem is to implement the numerical routines for Maxima Bigfloat
numbers. Because we have to use complex arithmetic the implementation of
Bigfloats is not straight forward.
When the extension is of interest, the question arise where we could place the
additional code for the exponential integrals.
For the development of the code I have added the file expintegral.lisp to the
file maxima.system and put the file expintegral.lisp in the maxima/src
directory.
Dieter Kaiser