http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56204



--- Comment #2 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot 
Uni-Bielefeld.DE> 2013-02-13 11:19:37 UTC ---

> --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-02-12 
> 19:27:16 UTC ---

> (In reply to comment #0)

>> The test is l.34:

>> 

>> 34         if (fp2 /= fp4) call abort()

>> but unfortunately gdb 7.5 can read neither variable.

>

> Can you uncomment the existing "print" lines and add

>   print *, fp2

>   print *, fp4

> before the abort line?



Sure, this way I get



>   1.00000000000000000000000000000000000<

>1.00000000000000000000000000000000000<

>   1.41421356237309504880168872420969798<

>1.41421356237309504880168872420969798<

   1.41421356237309504880168872420969798      

   1.41421356237309504880168872420969779      



> Probably, some rounding goes wrong - maybe replacing

>   if (fp2 /= fp4) call abort()

> by

>   if (abs (fp2 - fp4)/fp2 > epsilon(fp2)) call abort()

> works which allows for a minor deviation of the value.



This helps, but now we run into the next abort.  Adding another set of

print's shows



   1.41421356237309504880168872420969798      

   1.41421356237309504880168872420969779      



Changing the abort() conditions both times allows the test to pass, also

tested with the prints commented again and the appropriate runtest

invocation on i386-pc-solaris2.9, i386-pc-solaris2.10, and

x86_64-unknown-linux-gnu.



The quad_3.f90 test aborts here:



#5  0x080511b1 in test_qp ()

    at /vol/gcc/src/hg/trunk/local/gcc/testsuite/gfortran.dg/quad_3.f90:28

28           if (a-b(1) /= 0.0_qp .or. c-b(1) /= 0.0_qp) call abort()



Uncommenting the prints shows:



 same value read again:      1.18973149535723176508575932662800647E+0932  

1.18973149535723176508575932662800647E+0932

 difference: looks OK now   -1.87718493982104061421441469311027910E+0898



    Rainer

Reply via email to