float of struve_h functions?



Am Donnerstag, den 20.10.2011, 14:34 -0500 schrieb Barton Willis:
> 
> "Edwin Woollett" <woollett at charter.net> wrote on 10/20/2011 12:39:04
> PM:
> 
> > (%i4) float(struve_h(0,100));
> > (%o4) -7.2734918013969798E+23  ***not ok*** 
> 
> Thanks for catching this bug: 
> 
>   (%i26) hypergeometric([1],[3/2,3/2], -10000.0); 
>   (%o26) 4.391887286825863*10^65 
> 
>   (%i28) hypergeometric([1],[3/2,3/2], -10000.0b0); 
>   (%o28) -4.0120302702491972103831671317134763299116280927551908191b-4
> 
> I'll file a report. 

I am the author of the implementation of the Struve functions. I am
sorry about the missing documentation in English. I have written the
documentation in German and for a lot of other special functions I have
extended the documentation, too. Rupert Swarbrick has offered some help
to translate the German documentation into English. The first function
he has translated in English are `abs' and `cabs'. I will add these
functions soon.

This is the German documentation of struve_h:

-- Funktion: struve_h (<v>, <z>)
     Die Struve-Funktion H der Ordnung v mit dem Argument z.  Siehe
     Abramowitz und Stegun, Handbook of Mathematical Functions, Kapitel
     12.  Die Definition ist

                              inf
                              ====                  k  2 k
                      z v + 1 \                (- 1)  z
             H (z) = (-)       >   ----------------------------------
              v       2       /      2 k           3                3
                              ====  2   gamma(k + -) gamma(v + k + -)
                              k = 0                2                2

     Die Struve-Funktion `struve_h' ist f?r das numerische und
     symbolische Rechnen geeignet.  Im Unterschied zu den
     Bessel-Funktionen  ist jedoch die Implementation der Funktion
     `struve_h' weniger vollst?ndig.

     Maxima berechnet `struve_h' numerisch f?r reelle und komplexe
     Gleitkommazahlen als Argumente f?r v und z.  Mit der Funktion
     `float'  oder der Optionsvariablen `numer'  kann die numerische
     Auswertung erzwungen werden, wenn die Argumente Zahlen sind.

     Hat die Optionsvariable `besselexpand'  den Wert `true', wird die
     Struve-Funktion `struve_h' mit einer halbzahligen Ordnung v als
     Sinus- und Kosinusfunktionen entwickelt.

     Maxima kennt die Ableitung der Struve-Funktion `struve_h' nach dem
     Argument z.

     Siehe auch die Struve-Funktion `struve_l'.

     Beispiele:

          (%i1) struve_h(1, 0.5);
          (%o1)                  .05217374424234107
          (%i2) struve_h(1, 0.5+%i);
          (%o2)       0.233696520211436 %i - .1522134290663428
          (%i3) struve_h(3/2,x), besselexpand: true;
                                                     2
                            2 x sin(x) + 2 cos(x) - x  - 2
          (%o3)           - ------------------------------
                                                   3/2
                                sqrt(2) sqrt(%pi) x
          (%i4) diff(struve_h(v, x), x);
                             v
                            x
          (%o4) (------------------------- - struve_h(v + 1, x)
                            v           3
                 sqrt(%pi) 2  gamma(v + -)
                                        2
                                              + struve_h(v - 1, x))/2

Dieter Kaiser