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 c++/35389] error in norm() of STL



------- Comment #4 from pluto at agmk dot net  2008-02-27 20:30 -------
Subject: Re:  error in norm() of STL

On Wednesday 27 of February 2008 21:13:13 ywei at qualcomm dot com wrote:
> ------- Comment #3 from ywei at qualcomm dot com  2008-02-27 20:13 -------
> Subject: RE:  error in norm() of STL
>
> I did additional test based your test code. You are right that norm()
> seems to be fine. The problem happens when I try to cast the return
> double value of norm() to unsigned long long (please see my test code
> below and the corresponding output). Still, it bothers me that if I
> carry out the norm calculation explicitly, instead of calling norm(),
> there is no such an issue.
>
> Thanks,
> - Yongbin
>
> My test code:
> =================================================================
> #include <iostream>
> #include <complex>
>
> using namespace std;
>
> main() {
>
>    complex<double> tt(8,1);
>    double x, y;
>
>     x = norm(tt);
>       double r = tt.real(), i = tt.imag();
>       y = r*r + i*i;
>
>         cout << tt << "\t" << (unsigned long long)x << "\t" << (unsigned
> long long)y << endl;
>         cout << tt << "\t" << x << "\t" << y << endl;
> }
> ======================================
> The output
> (8,1)   64      65
> (8,1)   65      65

$ ./a.out
(8,1)   64      65
(8,1)   64.999999999999985789   65

(long long)64.99999 -> 64.


------- Comment #5 from pluto at agmk dot net  2008-02-27 20:30 -------
Created an attachment (id=15239)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15239&action=view)


-- 


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


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