mpz_limbs interface

Marc Glisse marc.glisse at
Thu Feb 6 10:39:13 UTC 2014

On Thu, 6 Feb 2014, Niels Möller wrote:

> nisse at (Niels Möller) writes:
>> For mpn_set_d, I think it would make some sense to have it return a
>> base-2 exponent, and write the mantissa to a few limbs. Number of limbs
>> would be a constant, part of the ABI, similar to LIMBS_PER_DOUBLE but
>> renamed for external use.
>>   mp_bitcnt_t
>>   mpn_set_d (mp_limb_t rp[LIMBS_PER_BOUBLE], d);
> Below is a patch to do this (and return value is long, not mp_bitcnt_t,
> since it needs to be signed).


> What do you think?

(I haven't looked at it much yet)

Why not return int, since int is what we use for _mp_size?

Is 53 really safe for non-IEEE double? Maybe something based on 
DBL_MANT_DIG, assuming that FLT_RADIX==2?

I don't think we are still supporting gcc-2.8...

>From a performance POV, it may not be optimal to split the 
sign/infinity/nan/zero test from the rest, but I agree it makes the 
interface simpler.

> +   ASSERT (d != 0.5*d);	/* Exclude infinities */

That excludes more than infinities, it might also exclude FLT_TRUE_MIN, 

Marc Glisse

More information about the gmp-devel mailing list