Struve H and L functions



I have committed a first implementation of the Struve H and L functions.
The new names are struve_h and struve_l. The following features are
implemented:

1. Handling of the special value zero for the argument.
2. Numerical evaluation for float and complex order and argument
   in float and bigfloat precision using the hypergeometric code
3. Differentiation wrt the argument
4. Expansion in elementary functions for a half integral order
   when besselexpand is true.

Some examples:

Handling of special values:

(%i2) struve_h(-1,0);
(%o2) 2/%pi

Expansion for an half integral order:

(%i3) struve_h(1/2,x),besselexpand:true;
(%o3) -(sqrt(2)*cos(x)-sqrt(2))/(sqrt(%pi)*sqrt(x))

(%i4) struve_h(-1/2,x),besselexpand:true;
(%o4) sqrt(2)*sin(x)/(sqrt(%pi)*sqrt(x))

Numerical evaluation for real and complex order and argument:

(%i5) struve_h(1,0.5);
(%o5) .05217374424234107

(%i6) struve_h(1,0.5+%i);
(%o6) .2336965202114359*%i-.1522134290663429

(%i7) struve_h(%i,0.5+%i);
(%o7) .09182387904255078*%i+.3491876143558979

Numerical evaluation in bigfloat precision:

(%i9) fpprec:32;
(%o9) 32
(%i10) struve_h(%i,0.5b0+%i);
(%o10) 9.1823879042550689966509007351711b-2*%i
        +3.4918761435589790434960320920074b-1

I have updated the examples, the code for the integration of the bessel
functions, and the documentation too.

More work is possible.

Dieter Kaiser