#include "mycomplex.h" constexpr double square (double x) { return x * x; } complex& operator*= (complex& a, complex b) { double r = a.real() * b.real() - a.imag() * b.imag(); double i = a.real() * b.imag() + a.imag() * b.real(); a.real(r); a.imag(i); return a; } complex& operator/= (complex& a, complex b) { double d = square(b.real()) + square(b.imag()); complex c {b.real() / d, -b.imag() / d}; return a *= c; } complex operator+ (complex a, complex b) { return a += b; } complex operator- (complex a, complex b) { return a -= b; } complex operator- (complex a) { return {-a.real(), -a.imag()}; } complex operator* (complex a, complex b) { return a *= b; } complex operator/ (complex a, complex b) { return a /= b; } bool operator== (complex a, complex b) { return a.real() == b.real() && a.imag() == b.imag(); } bool operator!= (complex a, complex b) { return !(a == b); }