Re: Re: Function evaluation
- To: mathgroup at smc.vnet.net
- Subject: [mg17639] Re: [mg17611] Re: Function evaluation
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Fri, 21 May 1999 03:37:32 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Bob:
>A problem can still arise with s identically zero (integer zero).
>Note the following:
>
>f[s_,n_]:=BesselK[0,n*(1-s)]-BesselK[0,n]*
> BesselI[0,n*(1-s)]/BesselI[0,n];
>
>Table[f[0, n], {n, 0.01, 1.0, 0.01}]
>
>{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 2.220446049250313*^-16, 0., 0., 0.,
> 1.110223024625156*^-16, 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
> 1.110223024625156*^-16, 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
> 0., 0., 0., 5.551115123125782*^-17, 0., 0., 0., 0., 0.}
Agreed -- but, for this example, surely it would be better to do
Table[Evaluate[f[0, n]], {n, 0.01, 1.0, 0.01}]
anyway.
>Consequently, both 0 and 0. should be covered by the special case.
>The following handles both cases:
>
>f[s_ /; s==0, n_] := 0;
This works fine for testing against 0. However, suppose the function was
g[s_,n_]:=10^6 (BesselK[0,n s]-BesselK[0,n] BesselI[0,n s]/BesselI[0,n]);
g[s_ /; s==1,n_]:= 0
instead. Because there is machine dependence on what is treated as a "1".
E.g., on a DEC alpha,
In[1]:= 1.00000000000002 == 1
Out[1]= True
the second definition will lead to other problems (since g[1,n] is now
significantly different to g[1.00000000000002,n]).
Cheers,
Paul