| Karim Belabas on Thu, 12 May 2005 20:24:44 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: erfc() behavior change |
* Walter Neumann [2005-05-12 17:15]:
> There does seem to be a related incosistency however:
>
> ? erfc(-2^11)
> %1 = 2.000000000000000000000000000
> ? 2-%1
> %2 = 0.E-1821573
> ? precision(%2)
> %3 = 1821573
>
> ...
>
> ? 0.0
> %10 = 0.E-28
> ? precision(%)
> %11 = 28
> ? 0.0e-90
> %12 = 0.E-91
> ? precision(%)
> %13 = 96
> ? 1.e-90
> %14 = 1.000000000000000000000000000 E-90
> ? precision(%)
> %15 = 28
>
> Shouldn't precision in %3 and %13 be something like 28?
'precision' is not really defined in the documentation (should be...).
* For a basic type not involving floating point components, precision(x)
is +oo [ well, an absurdly large number, strictly larger than the precision
of any inexact object. ]
* For a _non_zero_ t_REAL x, precision(x) is the number of significant digits
for _non_zero_ x. This is only approximately true: various radix
conversions and assorted roundings are involved.
* For a _zero_ t_REAL x, precision(x) is max(- expo_10(x), 0).
There are no significant digits in this case.
* For a t_COMPLEX, precision(x + I*y) is (roughly) precision(|x| + |y|).
* For another recursive object, precision(x) is the min of all involved
precisions.
The precision of
X*(1. to 100 significant digits) + 0.e-1000
is 100.
X*(1. to 100 significant digits) + 0.e+1000
is 0.
Hope this helps,
Karim.
--
Karim Belabas Tel: (+33) (0)1 69 15 57 48
Dep. de Mathematiques, Bat. 425 Fax: (+33) (0)1 69 15 60 19
Universite Paris-Sud http://www.math.u-psud.fr/~belabas/
F-91405 Orsay (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]