[−][src]Constant gmp_mpfr_sys::C::MPFR::MPFR_and_the_IEEE_754_Standard
pub const MPFR_and_the_IEEE_754_Standard: ();
This constant is a place-holder for documentation; do not use it in code.
Next: Contributors, Previous: API Compatibility, Up: Top [Index]
7 MPFR and the IEEE 754 Standard
This section describes differences between MPFR and the IEEE 754 standard, and behaviors that are not specified yet in IEEE 754.
The MPFR numbers do not include subnormals. The reason is that subnormals
are less useful than in IEEE 754 as the default exponent range in MPFR
is large and they would have made the implementation more complex.
However, subnormals can be emulated using mpfr_subnormalize
.
MPFR has a single NaN. The behavior is similar either to a signaling NaN or to a quiet NaN, depending on the context. For any function returning a NaN (either produced or propagated), the NaN flag is set, while in IEEE 754, some operations are quiet (even on a signaling NaN).
The mpfr_rec_sqrt
function differs from IEEE 754 on -0,
where it gives +Inf (like for +0), following the usual limit rules,
instead of -Inf.
The mpfr_root
function predates IEEE 754-2008 and behaves
differently from its rootn operation.
It is deprecated and mpfr_rootn_ui
should be used instead.
Operations with an unsigned zero: For functions taking an argument of
integer or rational type, a zero of such a type is unsigned unlike the
floating-point zero (this includes the zero of type unsigned long
,
which is a mathematical, exact zero, as opposed to a floating-point zero,
which may come from an underflow and whose sign would correspond to the
sign of the real non-zero value). Unless documented otherwise, this zero
is regarded as +0, as if it were first converted to a MPFR number with
mpfr_set_ui
or mpfr_set_si
(thus the result may not agree
with the usual limit rules applied to a mathematical zero). This is not
the case of addition and subtraction (mpfr_add_ui
, etc.), but for
these functions, only the sign of a zero result would be affected, with
+0 and -0 considered equal.
Such operations are currently out of the scope of the IEEE 754 standard,
and at the time of specification in MPFR, the Floating-Point Working Group
in charge of the revision of IEEE 754 did not want to discuss issues with
non-floating-point types in general.
Note also that some obvious differences may come from the fact that in
MPFR, each variable has its own precision. For instance, a subtraction
of two numbers of the same sign may yield an overflow; idem for a call
to mpfr_set
, mpfr_neg
or mpfr_abs
, if the destination
variable has a smaller precision.
Next: Contributors, Previous: API Compatibility, Up: Top [Index]