//Implementation File:	complex.cpp
#include "complex.h"
#include <iostream>
using namespace std;

complex::complex()	//Constructor
{
	re=im=0;
}

complex::complex(double x, double y)  //Constructor
{
	re=x;
	im=y;
}

complex::~complex(){}

//			Inspectors

double complex::getReal() const
{
	return re;
}

double complex::getImag() const
{
	return im;
}

//			I/O Facilitators
complex complex::add(const complex z) const
{
	return complex(re + z.re,
					im + z.im);
}

complex complex::subtract(const complex z) const
{
	return complex(re - z.re,
					im - z.im);
}
complex complex::multiply(const complex z) const
{
	return complex(re*z.re - im*z.im,
					re*z.im + im*z.re);
}
complex complex::divide(const complex z) const
{
	double mod2 = z.re * z.re + z.im * z.im;

	return complex((re * z.re + im * z.im)/mod2,
					(im * z.re - re * z.im)/mod2);
}

void complex::insert(ostream & out) const
{
    	out << re << " + " << im << " i" << endl;
}

