[Bug c++/35389] error in norm() of STL

ywei at qualcomm dot com gcc-bugzilla@gcc.gnu.org
Wed Feb 27 20:13:00 GMT 2008



------- 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 

-----Original Message-----
From: rguenth at gcc dot gnu dot org [mailto:gcc-bugzilla@gcc.gnu.org] 
Sent: Wednesday, February 27, 2008 4:44 AM
To: Wei, Yongbin
Subject: [Bug c++/35389] error in norm() of STL



------- Comment #2 from rguenth at gcc dot gnu dot org  2008-02-27 12:43
-------
I used:

#include <complex>
#include <algorithm>
#include <iostream>

int main()
{
  std::complex<double> x(8, 1);
  std::cout << std::norm(x) << std::endl;
}


-- 


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



More information about the Gcc-bugs mailing list