[CLN-list] Conversion bug?

Richard B. Kreckel kreckel at ginac.de
Tue Sep 21 07:09:57 CEST 2010


Hi Jens!

Jens Vollinga wrote:
> is there maybe a bug in the implementation of double_approx()? If I do 
> something like
> 
> #include <iostream>
> #include <cln/cln.h>
> 
> using namespace std;
> using namespace cln;
> 
> int main()
> {
>     cl_F c = cl_F("1.23456789012345678901234567890_200");
>     cout << c << endl;
>     cout << double_approx(c) << endl;
>     return 0;
> }
> 
> the second output gives only single precision (aka float_approx)!

Jeez, Jens, nine o'clock is not *that* late, is it?  ;-)

This is only what operator<<(ostream&,double) prints!

Remember: You need 17 decimal digits in order to print a 
double-precision float such that it can always be converted back to a 
float (9 for a single-precision float). Check Theorem 15 of David 
Goldberg's "What Every Computer Scientist Should Know About 
Floating-Point Arithmetic".

Cheers
   -richy.
-- 
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>


More information about the CLN-list mailing list