#include #include "COMPLEX.hpp" #include "ERROR.hpp" ERR g_cxErr; char g_szComplex[ 128 ]; _COMPLEX _COMPLEX::operator /= ( _COMPLEX &rhs ) { double Divsr = rhs.m_X*rhs.m_X + rhs.m_Y*rhs.m_Y; double XX = this->m_X * rhs.m_X; double YY = this->m_Y * rhs.m_Y; double YX = this->m_Y * rhs.m_X; double XY = this->m_X * rhs.m_Y; this-> m_X = (XX+YY)/Divsr; this-> m_Y = (YX-XY)/Divsr; return *this; } _COMPLEX operator * ( double lhs ,_COMPLEX rhs ) { return _COMPLEX( lhs*rhs.m_X ,lhs*rhs.m_Y ); } _COMPLEX operator / ( double lhs ,_COMPLEX rhs ) { if( fabs(rhs.m_X) == fabs(rhs.m_Y) ) { if( rhs.m_X != rhs.m_Y ) return _COMPLEX( lhs/(2.0*rhs.m_X) ,lhs/(2.0*rhs.m_X) ); else return _COMPLEX( lhs/(2.0*rhs.m_X) ,-lhs/(2.0*rhs.m_X) ); } else { double Divsr = rhs.m_X*rhs.m_X - rhs.m_Y*rhs.m_Y; return _COMPLEX( lhs*rhs.m_X/Divsr ,lhs*rhs.m_Y/Divsr ); } } void _COMPLEX::Show() { sprintf( g_szComplex ,"%10.8g %10.8g" ,m_X ,m_Y ); g_cxErr.Warn(g_szComplex); }