Vivaldo writes:
 > Dear Sir,
 > 
 > I have found a difficult do work with long double. I have written a 
 > simple test code and compiled it with gcc 4.0.0. The code was the following
 > 
 > #include <cmath>
 > #include <iostream>
 > 
 > using namespace std;
 > 
 > main(){
 > 
 > long double x,y,a;
 > x = 1.000000000000001;  //(1 at 15th decimal place)
 > y = 1.000000000000002; //(idem)
 > a = y - x;
 > cout.precision(30);
 > cout << a << endl;
 > }
 > 
 > Surprinsingly, the output written in the screen was not
 > 
 > 1.0000....e-15
 > 
 > with 19 correct decimal places. Instead the result was
 > 
 > 8.88178419700125232338905334473e-16
 > 
 > with error at the 16-th place!
 > 
 > How should I proceed to have the precision of 19 significative digits?

This list is not for general gcc enquiries, but for the development of
gcc itself.  Please address queries to gcc-help.

This is not a bug.  The type of a floating-point literal is double by
default, not long double.  See Section 2.13.3 of the C++ Standard,
"floating literals"

Andrew.

Reply via email to