Alban Nonymous alban.nonymous at
Tue Jan 22 15:28:17 CET 2008

I am a little surprised you get a ~200-fold slowdown.

Are you using GMP's floats because of the accuracy or because of the
range (of the exponent)?  What precision of the GMP floats are you

If it is only range you're after, perhaps maintaining a seprate
overflow exponent for each "double" would be an alternative.  After an
arithmetic operation, you need to check if the exponent is > 100 (say)
or less than -100.  Then you canonicalize it, and add (subtract) 100  to
your overflow exponent.

(To make this fast, don't use ldexp and its related functions, instead
just do C comparisions "if (x > 1e100) {x *= 1e-100; xexp += 100;})


More information about the gmp-discuss mailing list