#include "imaginary.h" using namespace std; Imaginary::Imaginary() { real = 0; imaginary = 0; } Imaginary::Imaginary(double r, double im) { real = r; imaginary = im; } Imaginary Imaginary::conjugate() { Imaginary c(real,-imaginary); return c; } void Imaginary::set(double r, double i) { real = r imaginary = i; } void Imaginary::get_real() { return real; } void Imaginary::get_imaginary() { return imaginary; } Imaginary Imaginary::operator+(const Imaginary& i2) const { Imaginary sum; sum.real = real + i2.real; sum.imaginary = imaginary + i2.imaginary; return sum; } Imaginary Imaginary::operator-(const Imaginary& i2) const { Imaginary diff; diff.real = real - i2.real; diff.imaginary = imaginary - i2.imaginary; return diff; } Imaginary Imaginary::operator*(const Imaginary& i2) const { Imaginary product; //since i^2 = -1, multiply by -1 product.real = real * i2.real + imaginary * i2.imaginary * -1; product.imaginary = real * i2.imaginary + i2.real * imaginary; return product; } Imaginary Imaginary::operator/(const Imaginary& i2) const { Imaginary conj; Imaginary num,dem; Imaginary answer; conj = i2.conjugate(); num.real = real * conj.real + imaginary * conj.imaginary * -1; num.imaginary = real * conj.imaginary + imaginary * conj.real; dem.real = i2.real * conj.real + i2.imaginary * conj.imaginary * -1; dem.imaginary = i2.real * conj.imaginary + i2.imaginary * conj.real; answer.real = num.real/dem.real; answer.imaginary = num.imaginary/dem.real; return answer; } istream& Imaginary::operator>> (istream& input, Imaginary& i) { char sign, extra; cout << "enter in a + bi form" << endl; input >> i.real >> sign >> i.imaginary >> extra; if ( sign == '-' ) i.imaginary = -i.imaginary; return input; } ostream& Imaginary::operator<< (ostream& output, const Imaginary& i) { if (i.imaginary == 0) output << i.real; else if(i.real == 0) output << i.imaginary << "i"; else if (i.imaginary < 0) output << i.real << " - " << -i.imaginary << "i"; else output << i.real << " + " << i.imaginary <<"i"; return output; }