Complex Complex::operator/( const Complex c1 ) { double a , b ; if ( fabs( c1.getRealPart() ) >= fabs( c1.getImaginaryPart() ) ) { a = c1.getImaginaryPart() / c1.getRealPart() ; b = 1.0l / ( c1.getRealPart() + a * c1.getImaginaryPart() ) ; return Complex( ( R + a * I ) * b , ( I - a * R ) * b ) ; } else { a = c1.getRealPart() / c1.getImaginaryPart() ; b = 1.0l / ( c1.getRealPart() * a + c1.getImaginaryPart() ) ; return Complex( ( R * a + I ) * b , ( I * a - R ) * b ) ; } }
Complex Complex::operator*( const Complex c1 ) { return Complex( R*c1.getRealPart() - I*c1.getImaginaryPart() , R*c1.getImaginaryPart() + I*c1.getRealPart() ) ; }
double Complex::pow( Complex base , double exp ) { return ( pow( base.getRealPart() , exp ) - pow( base.getImaginaryPart() , exp ) ); }
Complex Complex::operator-( const Complex c1 ) { return Complex( R - c1.getRealPart() , I - c1.getImaginaryPart() ) ; }
bool Complex::Compare( const Complex & c1 ) { if ( R == c1.getRealPart() || I == c1.getImaginaryPart() ) return true ; else return false ; }
bool Complex::operator!=( const Complex & c1 ) { if ( R != c1.getRealPart() || I != c1.getImaginaryPart() ) return true ; else return false ; }
//subtraction function Complex Complex::subtract(Complex& c){ //follows imaginary number equation return Complex(getRealPart()-c.getRealPart(),getImaginaryPart()-c.getImaginaryPart()); }
//sets original to specified void Complex::operator=(Complex c){ this->a=c.getRealPart(); this->b=c.getImaginaryPart(); }
//adding function Complex Complex::add(Complex& c){ //follows imaginary number equation return Complex(getRealPart()+c.getRealPart(),getImaginaryPart()+c.getImaginaryPart()); }
//division function Complex Complex::divide(Complex& c){ return Complex((getRealPart()*c.getRealPart()+getImaginaryPart()*c.getImaginaryPart())/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart() ),( getImaginaryPart()*c.getRealPart()-getRealPart()*c.getImaginaryPart())/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart() )); }
//multiplication function Complex Complex::multiply(Complex& c){ return Complex((getRealPart()*c.getRealPart()-getImaginaryPart()*c.getImaginaryPart()),( getImaginaryPart()*c.getRealPart()+getRealPart()*c.getImaginaryPart())); }