This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Architecture floating-point underflow information wanted


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]