#include "complex.h" std::ostream& operator<< (std::ostream& cout, Complex c){ return cout << "[" << c.re << "," << c.im << "]"; } std::istream& operator>> (std::istream& cin, Complex c){ char x = '['; char y = ','; char z = ']'; return cin >> x >> c.re >> y >> c.im >> z; } Complex operator+ (Complex& a, Complex& b){ double re; double im; re = a.re + b.re; im = a.im + b.im; Complex result; result.re = re; result.im = im; return result; } Complex operator- (Complex& a, Complex& b){ double re; double im; re = a.re - b.re; im = a.im - b.im; Complex result; result.re = re; result.im = im; return result; } Complex operator* (Complex& a, Complex& b){ double re; double im; re = a.re*b.re - a.im*b.im; im = a.re*b.im + a.im*b.re; Complex result; result.re = re; result.im = im; return result; } Complex operator-(Complex a){ a.re = -a.re; a.im = -a.im; return a; } Complex& conjugation(Complex& a){ a.im = -a.im; return a; } Complex operator/ (Complex& a, Complex& b){ Complex nu1; Complex nu2; nu2.re = b.re*b.re + b.im*b.im; nu2.im = 0; nu1.re = a.re*b.re + a.im*b.im; nu1.im = a.im*b.re - a.re*b.im; double devide1 = 1/(nu2.re); Complex devide2; devide2.re = devide1; devide2.im = 0; return nu1*devide2; } bool operator== (Complex& a, Complex& b){ if(a.re == b.re && a.im == b.im) return true; else return false; } bool operator!= (Complex& a, Complex& b){ if(a.re == b.re && a.im == b.im) return false; else return true; }