This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/19609] [4.0 Regression] real and imaginary part interchanged when flags_complex_divide_method=1


------- Additional Comments From pcarlini at suse dot de  2005-01-24 23:01 -------
Hi Richard. It seems to me that the problem is in the implemented formula.

Looking at Goldberg, when |d| >= |c| in its paper,that is |bi| > |br| in the
Gcc code, we should have, at the end of the calculation:

  ((ai + ar*ratio)/div) + i((-ar + ai*ratio)/div)

and *not*:

  ((ar + ai*ratio)/div) + i((ai - ar*ratio)/div)

Indeed, this explanation is consistent with the behavior observed with
the specific testcase.

-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]