Does -0.5 fit an unsigned when truncated to an integer?

Zimmermann Paul Paul.Zimmermann at inria.fr
Mon Mar 18 09:35:14 CET 2013


       Marco,

> Date: Mon, 18 Mar 2013 08:28:55 +0100 (CET)
> From: bodrato at mail.dm.unipi.it
> 
> Ciao,
> 
> I was reading some sources in mpf, and I do not understand a detail.
> 
> Documentation of mpf_fits_uint_p reads:
> "Return non-zero if op would fit in the respective C data type, when
> truncated to an integer."
> 
> The source code contains the comment:
> /* Notice this is equivalent to mpz_set_f + mpz_fits_u*_p.  */
> 
> But mpf_fits_uint_p (-0.5) returns zero, and our test suite require this
> behavior:
>   mpf_set_str_or_abort (f, "-0.5", 10);
>   expr = "-0.5";
>   EXPECT (mpf_fits_ulong_p, 0);
>   EXPECT (mpf_fits_uint_p, 0);
>   EXPECT (mpf_fits_ushort_p, 0);
> 
> I don't understand...

indeed this is inconsistent. mpf_fits_uint_p(-0.5) should return true, as well
as mpf_fits_uint_p(-0.99999999999).

Paul


More information about the gmp-devel mailing list