gcc compilation on amd opteron and precision

Muge Unel m.unel1@physics.ox.ac.uk
Sat May 7 12:14:00 GMT 2005



HI gcc-guru's,
 
I have a question: 
i am having my first compiling experiences on an opteron machine+64bit
arch and testing various compilers and options.
This is on 
RH ES x86_64 x86_64 x86_64 GNU/Linux  AMD Opteron Processor 248, using
"/usr/bin/gcc  -O3" with either an -m32 or -m64 option.
My main concern is how to obtain the maximum precision from the
architecture, expecially 128-bit quad. precision.
The first thing i checked  is the sizes of data types.
I think i get the correct behaviour for that:
for example, 16B with 64bit compilation and 12B for 32, for a long
double size.
however, the results of my simple calculations do not seem to make
sense.
for example, code fragments like:


printf ("for a long double \n");
p= (long double) 1.0 / (long double) 3.0;
q = (long double) p *  (long double) 3.0 -  (long double) 1.0;
printf ("1 /3 is:              %.30e\n", p);
printf ("(1 / 3) x 3 - 1 is:   %.30e\n", q);

give me:

-m32:
for a float
1 / 3 is:              3.333333432674407958984375000000e-01       vs 3.3
(1 / 3) x 3 - 1 is:    0.000000000000000000000000000000e+00    vs 0.0
 
for a double
1 / 3 is:              3.333333333333333148296162562474e-01
(1 / 3) x 3 - 1 is:    0.000000000000000000000000000000e+00
 
for a long double
1 /3 is:              -3.720662080996989039630925438211e-103
(1 / 3) x 3 - 1 is:   0.000000000000000000000000000000e+00


-m64:
for a float
1 / 3 is:              3.333333432674407958984375000000e-01     vs 3.3
(1 / 3) x 3 - 1 is:    0.000000000000000000000000000000e+00     vs 0.0
 
for a double
1 / 3 is:              3.333333333333333148296162562474e-01
(1 / 3) x 3 - 1 is:    0.000000000000000000000000000000e+00
 
for a long double
1 /3 is:              0.000000000000000000000000000000e+00
(1 / 3) x 3 - 1 is:   0.000000000000000000000000000000e+00


could you give me some insight? what i may be doing wrong? what should i
do (for. ex, which options?) should i use to get quadrupole precision? 

Thanks a lot for any help!
Best,
Muge



More information about the Gcc-help mailing list