Subject: Re: accuracy of "long double"
To: None <10.50@free.fr>
From: Neil Booth <neil@daikokuya.co.uk>
List: tech-toolchain
Date: 08/30/2007 07:29:34
10.50@free.fr wrote:-
>> Yes, no, yes. :) Rounding for all FP arithmetic is to double precision
>> by default.
>
> That's still (partially) unclear. You mean that, if I add two
> <long double>s and put the result in a <long double>, I won't
> get the extra precision I expect in the result because it will
> be truncated to (normal) <double> precision ?
Yes. You can test this yourself of course:
#include <float.h>
volatile double y = DBL_EPSILON;
volatile long double z = LDBL_EPSILON;
int main (void)
{
return (z > 0 && z + 1 == 1
&& y > 0 && y + 1 != 1);
}
For me on NetBSD main returns 1. Which makes me wonder whether
the definition of LDBL_EPSION on x86 NetBSD is wrong - shouldn't
it be the same as DBL_EPSILON on x86 NetBSD?
> If yes, I don't see the point of keeping <long double>
> different from <double>?
Well, you do get greater exponent range. But don't ask me,
it wasn't my decision.
Neil.