#ifndef TComplex_H #define TComplex_H #include template class TComplex { public: // default constructor TComplex(T r = 0.0, T i = 0.0) {re = r; im = i;} // field access functions T real(void) const {return re;} T imag(void) const {return im;} // addition operator const TComplex operator+(const TComplex& rhs) const { return TComplex(re+rhs.re, im+rhs.im); } // multiplication operator const TComplex operator*(const TComplex& rhs) const { return TComplex(re*rhs.re - im*rhs.im, re*rhs.im + im*rhs.re); } private: T re, im; }; template T norm(const TComplex& x) { return x.real()*x.real() + x.imag()*x.imag(); } #endif