Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Changing the default i387 precision



On Sat, May 04, 2013 at 08:50:29AM -0400, Greg Troxel wrote:
> 
> Joerg Sonnenberger <joerg%britannica.bec.de@localhost> writes:
> 
> > On Sat, May 04, 2013 at 07:14:00AM -0400, Greg Troxel wrote:
> >> So are you proposing then
> >> 
> >>   1) Make gcc and clang use larger storage (maybe already true) and avoid
> >>   SSE instructions for variables declared as long double?
> >
> > That's already the case. long double computations always use the i387.
> > The point is that I want them to get the extended precision.
> 
> If what you want to do now is to change the way rounding is handled so
> that:
> 
>    long double variables get the 80-bit precision
> 
> without
> 
>    making (non-long) doubles get results that don't comply with IEEE754
>    (by using extended precision intermedate values)
> 
> then that sounds fine.  But I can't really tell what you want to change.

ISO C99 specifies rules on when the compiler is allowed to use a higher
precision for intermediate values and when not. That includes macros for
deciding what types the math is done in. We get away with our hack
mostly because underflow/overflow are rare enough that the larger
exponent is not visible. See also -ffloat-store and
-fexcess-precision=standard.

Joerg


Home | Main Index | Thread Index | Old Index