Architecture floating-point underflow information wanted
Joseph S. Myers
joseph@codesourcery.com
Tue Sep 25 19:30:00 GMT 2012
On Tue, 25 Sep 2012, Andreas Schwab wrote:
> "Joseph S. Myers" <joseph@codesourcery.com> writes:
>
> > #include <fenv.h>
> > #include <stdio.h>
> >
> > volatile float a = 0x1.fffp-126;
> > volatile float b = 0x1.0008p-1;
> > volatile float c;
> >
> > int
> > main (void)
> > {
> > feclearexcept (FE_ALL_EXCEPT);
> > c = a * b;
> > if (fetestexcept (FE_UNDERFLOW))
>
> Does this really give the correct result for FLT_EVAL_METHOD != 0? I
> think for those archs you have to set the rounding mode to float to be
> accurate.
On such architectures, the multiplication is exact (in a wider evaluation
type) and the potential underflow occurs on conversion to float to be
stored in "volatile float c". It doesn't matter whether the operation
with potential underflow is multiplication or conversion to float; both
are operations with binary floating-point results, so are required to
detect tinyness the same way.
--
Joseph S. Myers
joseph@codesourcery.com
More information about the Libc-alpha
mailing list