More general algorithm for $specint



At the moment I have to finish some work on the Exponential Integrals and to do
more tests of the Bigfloat algorithm. Later I would like to do further work on
$specint. There a lot of open problems for the special functions.

One big disadvantage of the algorithm of $specint is in my opinion that the
special functions are wired in the code. So, if we would add the Exponential
Integrals to the code a lot of work has to be done.

In a more object oriented way, I think, the function itself has to be more smart
and should help $specint to find a result. A first and trivial solution would be
to add a known Laplace transform of a function to the property list of the
function.

Perhaps more interesting would be to put a general representation in terms of
Hypergeometric functions on the property list. If the code of $specint doesn't
know the function it can look up the representation in terms of a Hypergeometric
function and try to integrate this representation.

Here an example for the Exponential Integral Si. The Hypergeometric
representation is:

Si(z) = z * 1F2([1/2;3/2,3/2],-z^2/4);

I have implemented in $specint the Laplace transform of the Hypergeometric
Function itself (Should I commit this feature? Is this of general interest?).
With the Hypergeometric representation of Si(z) we get the correct result for
the Laplace transform of Si:

(%i11) specint(%e^(-s*t)*t*hypergeometric([1/2],[3/2,3/2],-t^2/4),t);
(%o11) atan(1/s)/s

A second example with the Hypergeometric representation for the Exponential
Integral Ci:

(%i12) specint(%e^(-s*t)*(-t^2/4)*hypergeometric([1,1],[2,2,3/2],-t^2/4),t);
(%o12) -log(1/s^2+1)/(2*s)

So, if we support a general representation in terms of Hypergeometric functions
on the property list and add an algorithm to look up this representation we can
support the Laplace transform for Si and Ci without any extra coding in
$specint. Such a mechanism would allow to simplify the code of $specint too.
There is a lot of code to dispatch and to transform which will vanish.

Furthermore, I think it is of interest for the Maxima User too, to have the
possibility to ask for the Hypergeometric representation of a function.

One problem which arise is, that we have often more than one representation and
these representations are eventually restricted to special values of the
argument of the function. 

What do you think about the idea to put a Hypergeometric representation on the
property list and to add a lookup algorithm to $specint?

Dieter Kaiser