// complex.cc implement complex arithmetic operations #include "complex.h" #include complex cxadd(complex a, complex b) // add two complex numbers { complex c; c.re = a.re+b.re; c.im = a.im+b.im; return c; } complex cxsub(complex a, complex b) // subtract b from a, complex { complex c; c.re = a.re-b.re; c.im = a.im-b.im; return c; } complex cxmul(complex a, complex b) // multiply two complex numbers { complex c; c.re = a.re*b.re - a.im*b.im; c.im = a.re*b.im + a.im*b.re; return c; } complex cxmul(float a, complex b) // multiply float times complex { complex c; c.re = a*b.re; c.im = a*b.im; return c; } complex cxmul(complex a, float b) // multiply complex times float { complex c; c.re = a.re*b; c.im = a.im*b; return c; } complex cxdiv(complex a, float b) // divide complex by float { complex c; c.re = a.re/b; c.im = a.im/b; return c; } float cxmag(complex a) // return magnitude of complex munber { return (float)sqrt((double)(a.re*a.re+a.im*a.im)); } complex cxneg(complex a) // negate a complex { complex c; c.re = -a.re; c.im = -a.im; return c; } complex cxcnj(complex a) // conjugate a complex { complex c; c.re = a.re; c.im = -a.im; return c; }