gmp 4.2.4 - mpf_add two large negative floats - strange result

Vincent Lefevre vincent at
Thu Jan 22 01:25:00 CET 2009

On 2009-01-22 10:51:22 +1100, Sisyphus wrote:
> Duh .... 53 bits is the default for mpfr (I think),

Yes (this is the IEEE-754 double precision), though you should not
use the default precision.

> but the default for gmp's mpf type is 64 (on my build, at least).

In GMP, the precision is a multiple of the size of a limb in bits
(so, in practice, a multiple of 32 or 64). The default precision
is __GMPF_BITS_TO_PREC(53), where:

/* __GMPF_BITS_TO_PREC applies a minimum 53 bits, rounds upwards to a whole
   limb and adds an extra limb.  __GMPF_PREC_TO_BITS drops that extra limb,
   hence giving back the user's size in bits rounded up.  Notice that
   converting prec->bits->prec gives an unchanged value.  */
#define __GMPF_BITS_TO_PREC(n)                                          \
  ((mp_size_t) ((__GMP_MAX (53, n) + 2 * GMP_NUMB_BITS - 1) / GMP_NUMB_BITS))
#define __GMPF_PREC_TO_BITS(n) \
  ((unsigned long) (n) * GMP_NUMB_BITS - GMP_NUMB_BITS)

Vincent Lefèvre <vincent at> - Web: <>
100% accessible validated (X)HTML - Blog: <>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

More information about the gmp-discuss mailing list