Subject: Implementation of Hypergeometric functions
From: Raymond Toy
Date: Wed, 10 Dec 2008 10:43:40 -0500
>>>>> "Dieter" == Dieter Kaiser <drdieterkaiser at web.de> writes:
Dieter> I know we had a discussion on this list about the implementation of
Dieter> hypergeometric functions and the notation. Maxima knows the noun %
Dieter> f[p,q]([a1,a2,...,ap],[b1,b2,...,bq],z). There is not a lot of code
Dieter> implemented to use this noun. But the derivative is implemented directly
Dieter> into the code of sdiff. An example is:
I think I did that because hgfred needed to be able to differentiate
such forms when simplifying hypergeometric functions
Dieter> I would prefer a notation like
Dieter> hypergeometric([a1,...,ap],[b1,...,bq],z)
I kind of like %f since it's nice and short, but hypergeometric seems
like a better name. %f is just too generic.
Dieter> Perhaps it is useful to support some more notations like
Dieter> hypergeometric0f1(b,z)
Dieter> hypergeometric1f1(a,b,z) ...
Dieter> to have a short form for some special cases.
This works, but I think I prefer hypergeometric_0f1, _1f1, etc, so it
lookslesslikeabunchofwordsstucktogether.
Dieter> I do not prefer to do the code for the derivative directly into the
Dieter> routine of sdiff like it is done for the noun %f. I would prefer to use
Dieter> the more general lookup algorithm of sdiffgrad.
I agree.
Dieter> But one problem is that sdiffgrad does not support functions which have
Dieter> a list as an argument. I had to implement extra code in the routine
Dieter> sdiffgrad to support such functions. Furthermore, we have to build the
Dieter> derivative with the help of $map and $apply. The lookup routine does not
Dieter> support such expressions.
Dieter> I would like to do some further work on this topic. Perhaps we can use
Dieter> the extensions of the derivative routines for further functions too.
I agree. I think table-driven implementation is easier to extend and
maintain.
Ray