Re: printf and long double

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

 



Nanakos Chrysostomos wrote:

> I have the above C code snippet. I am trying to get a resonable
> result in a fixed form with printf for a long double value but with
> no luck. What am I doing wrong?

> 	long double c = powl(10.0L,30.0L);
> 
> 	printf("%llf %lle\n",c,c);

> # gcc -DDOUBLE -msse2 -mfpmath=sse -m64 -m128bit-long-double  long.c -lm
> #./a.out
> 
> 1000000000000000000024696061952.000000 1.000000e+30
> 
> The second result is right but how can I get a fixed right result for the first one?
> The fixed precision should be a lot bigger than this according to the IEEE-754 standard.
> I am using a 64-bit machine with Debian Squeeze x86-64 version.

On x86, long double is 80 bits, which is roughly 24 decimal digits.

The -m128bit-long-double flag only changes the alignment, not the
accuracy of the calculations.

The only reason why you're getting different results for %f and %e is
that the default precision of 6 refers to 6 decimal places for %f but
to 6 significant digits for %e.

-- 
Glynn Clements <glynn@xxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux