/* Imaginary Number class. */ #include class img { public: double r; double i; img() {r=0.0; i=0.0;} img(double nr, double ni) {r=nr; i=ni;} // constructor inline img operator * (img mul); inline img operator + (img mul); inline img operator - (img mul); inline img operator * (double mul); inline img operator + (double mul); inline img operator / (img div); // Now I know these are not correct functions (sin etc) // but who cares, they make wicked images inline img sinimg() {img result(sin(r),sin(i));return result;} inline img cosimg() {img result(cos(r),cos(i));return result;} inline img cossinimg() {img result(cos(r),sin(i));return result;} inline img sincosimg() {img result(sin(r),cos(i));return result;} inline img tanimg() {img result(tan(r),tan(i));return result;} inline img atanimg() {img result(atan(r),atan(i));return result;} }; inline img img::operator * (img mul) { // Multiplication img result(this->r * mul.r - (this->i*mul.i), this->r*mul.i + this->i*mul.r); return result; } inline img img::operator + (img mul) { // Addition img result(this->r + mul.r, this->i + mul.i); return result; } inline img img::operator - (img mul) { // Subtraction img result(this->r - mul.r, this->i - mul.i); return result; } inline img img::operator * (double mul) { // Multiplication by a double (not correct) img result(this->r * mul, this->i * mul); return result; } inline img img::operator + (double mul) { // addition by a double (not correct) img result(this->r + mul, this->i + mul); return result; } inline img img::operator / (img div) { // Dividing by another complex number img result( (this->r*div.r + this->i*div.i)/(div.r*div.r + div.i*div.i), (div.r*this->i - this->r*div.i)/(div.r*div.r + div.i*div.i) ); return result; }