------- Additional Comments From rth at gcc dot gnu dot org  2005-02-17 02:47 
-------
The "problem" is the use of the fused multiply-and-add instructions.  

1672          y = (b - (a * ratio)) / denom;
  d6:   70 70 24 0c 54 00                   fms.s.s0 f7=f9,f6,f14

This computes the intermediate results of the entire numerator with 82 bits of
precision.  One can argue that this is inappropriate, since it's not what the
source wrote.

HOWEVER, if I rewrite __divsc3 to explicitly use "long double" to compute
intermediate results -- which as far as I can see should be legitimate -- I 
also get 18059 for the imaginary part of the result.  As best I can figure,
that result is more mathematically correct than 0.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |WAITING


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

Reply via email to