And C libraries and compilers and even seemingly-unrelated compiler settings.
I strike these errors more in perl than in anything else. (But then, I only ever use perl and C ;-)
If you know of any such error with the mpfr C library, please report it to the mpfr at loria.fr list.
I think Jarkko Hietaniemi plans to replace perl's current (homegrown) implementation with netlib's gdtoa ... if he manages to find the tuits.
It would therefore be a good idea to report any problems with gdtoa to p5p.
Cheers, Rob | [reply] |
| [reply] |
If you want the over-engineered version in glibc, then build your Perl with d_strtod=1
Another way to get glibc to assign the value is to use POSIX::strtod.
Unlike my perl-5.22.0, it correctly assigns '-4.848e1':
C:\>perl -MPOSIX="strtod" -le "print scalar reverse unpack 'h*', pack
+'d<',strtod('-4.848e1');"
c0483d70a3d70a3d
In my experience, glibc gets the assignment right for those values that perl gets wrong - though not so much with the non-IEEE "double-double" arrangement, where both are prone to error.
However, I shouldn't assert that perl is any worse at assigning values than glibc. (I don't know how often glibc gets it wrong when perl gets it right.)
Cheers, Rob | [reply] [d/l] |