More general algorithm for $specint



Dieter Kaiser wrote:
> 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.
>
>
>   
[snip]
> 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.
>
>   
Yes, I think that's a useful transformation.  We really need to improve 
maxima's handling of hypergeometric functions too.
> 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.
One way would be to use any assumptions to choose the representation.  
Then maybe ask the user, although I know some people don't like that.
>  
>
> What do you think about the idea to put a Hypergeometric representation on the
> property list and to add a lookup algorithm to $specint?
>   
Well, as the one doing the implementation, you get to choose.  But I 
think a more modern approach would be to use a hash-table for this kind 
of stuff.  I know Barton did some work in that area for double-float 
evaluation  of trig functions.  I think it worked out fine.  Perhaps 
that work can be extended to support specint.  Or just create a new hash 
table for specint.  Having it all in one place would be nicer, but I 
think that requires a more careful design which I don't think anyone has 
done.

Ray