Behavior of mpf_eq near zero

Vincent Lefevre vincent at
Mon Apr 13 09:51:36 UTC 2015

On 2015-04-13 11:31:03 +0200, tg at wrote:
> Alejandro Mallea <janoma at> writes:
>   The documentation says that mpf_eq(op1, op2, op3) "returns non-zero if
>   the first op3 bits of op1 and op2 are equal", which makes me think
>   equality is dangerously tied to the internal representation ("the
>   first op3 bits"), but then it says "i.e., test if op1 and op2 are
>   approximately equal.", but that is not happening in this case.
> The mpf_eq function is not well thought out, but I believe it works
> according to its documentation.  Zero is only mpf_eq-equal to itself.

The manual poorly specifies this function since it doesn't say what
the first bits of a number are. For instance, the first 3 bits of




are "0.00" thus are equal. So, you need to introduce the concept
of normalization, and possibly take zero apart since it cannot be

> Please don't use this function.  At least use mpf_reldiff, or even
> better, use the mpfr GMP extension library.

I agree, though I really think that mpf_eq should be properly
specified. And how about saying that this function is obsolete
and planning to remove it in the future?

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

More information about the gmp-discuss mailing list