//--------------------------------------------------------------------------- // ŠNikolai V. Shokhirev, 2004-2008 <nikolai@shokhirev.com> http://www.shokhirev.com/nikolai.html // struct implementation of complex numbers //--------------------------------------------------------------------------- #ifndef Complex_H #define Complex_H #include "MathUtils.h" //--------------------------------------------------------------------------- struct Complex { real Re; real Im; }; Complex cmplx(real r, real i = 0.0); Complex Real(real r); Complex Img(real i); Complex Cadd(Complex c1, Complex c2); Complex Cadd(Complex c1, real r); Complex Cadd(real r, Complex c2); Complex Csub(Complex c1, Complex c2); Complex Csub(Complex c1, real r); Complex Csub(real r, Complex c2); Complex Cmul(Complex c1, Complex c2); Complex Cmul(Complex c1, real r); Complex Cmul(real r, Complex c2); Complex Cdiv(Complex c1, Complex c2); Complex Cdiv(Complex c1, real r); Complex Cdiv(real r, Complex c2); // Complex library Complex conjug(Complex c); real mod2(Complex c); real mod(Complex c); bool Equal(Complex c1, Complex c2, real eps = eps0); bool Equal(Complex c1, real r, real i, real eps = eps0); bool IsZero(Complex c); Complex exp(Complex c); // result = sqrt(z), result.Re > 0 Complex Csqrt(Complex z); #endif