23 #ifndef _ComplexTmplDec_
24 #define _ComplexTmplDec_
43 const T
Real()
const {
return mRe; }
44 const T
Imag()
const {
return mIm; }
53 const float insignificant = 0.000001;
56 if(absIm<insignificant && absRe>insignificant)
return absRe;
57 if(absRe<insignificant && absIm>insignificant)
return absIm;
65 return mRe*mRe + mIm*mIm;
130 return ComplexTmpl<T>(mRe*rhs.mRe - mIm*rhs.mIm, mRe*rhs.mIm + rhs.mRe*mIm);
142 const float rhsInvSquaredMag = 1.f/(rhs.mRe*rhs.mRe + rhs.mIm*rhs.mIm);
144 return ComplexTmpl<T>((mRe*rhs.mRe + mIm*rhs.mIm)*rhsInvSquaredMag, (rhs.mRe*mIm - mRe*rhs.mIm)*rhsInvSquaredMag);
150 return (mRe == b.mRe) && (mIm == b.mIm);
156 return !(*
this == b);
162 std::istream&
operator >> (std::istream & stream, ComplexTmpl<T> & a);
165 std::ostream& operator << (std::ostream & stream, const ComplexTmpl<T> & a);
169 #endif // _ComplexTmplDec_