|
[Date Index]
[Thread Index]
[Author Index]
Re: Bug in StruveH
- To: mathgroup at yoda.ncsa.uiuc.edu
- Subject: Re: Bug in StruveH
- From: Steve Christensen <stevec at yoda.ncsa.uiuc.edu>
- Date: Sun, 10 Feb 91 18:07:20 +0100
pjanhune at finsun.csc.fi writes:
> The package StruveH.m from the book by Roman Maeder contains the
> following bug:
>
> When called with an integer or rational second argument, the function
> StruveH returns an exact-looking result, which is WRONG!! It's only
> the first term of the series expansion. For floating-point arguments
> or complex numbers the function behaves correctly. One cure is to insert
> the line
> ....
There is indeed a bug in the numerical code of Struve[].
It should not be called with an exact second argument.
Therefore the rule should be made conditional as follows:
(* numerical evaluation *)
StruveH[nu_?NumberQ, z_?NumberQ] :=
Block[{s=0, so=-1, m=0, prec = Precision[z],
z2 = -(z/2)^2,k1 = 3/2, k2 = nu + 3/2, g1, g2, zf},
zf = (z/2)^(nu+1); g1 = Gamma[k1]; g2 = Gamma[k2];
While[so != s,
so = s; s += N[zf/g1/g2, prec];
g1 *= k1; g2 *= k2; zf *= z2;
k1++; k2++; m++
];
s
] /; Precision[z] < Infinity
(The proposed fix by pjanhune at finsun.csc.fi has the disadvantage
of giving an inexact result for exact input. This is contrary to
Mathematica's philosophy. One should use N[StruveH[...]] for this.)
This has already been fixed for the second edition of my book.
All the packages from the book will be part of Mathematica 2.0.
Roman Maeder
Prev by Date:
Data Help
Next by Date:
RE: Solve
Previous by thread:
Re: Data Help
Next by thread:
Subscripted
|