#include "complex.h"

complex operator+(complex& z1, complex& z2)
{
	complex t;
	t.re = z1.re + z2.re;
	t.im = z1.im + z2.im;
	return t;
}

complex operator-(complex& z1, complex& z2)
{
	complex t;
	t.re = z1.re - z2.re;
	t.im = z1.im - z2.im;
	return t;
}

complex operator*(complex& z1, complex& z2)
{
	complex t;
	t.re = z1.re * z2.re - z1.im * z2.im;
	t.im = z1.re * z2.im + z1.im * z2.re;
	return t;

}

complex operator/(complex& z1, complex& z2)
{
	complex t;
	t.re = (z1.re * z2.re + z1.im * z2.im) / (z2.re * z2.re + z2.im * z2.im);
	t.im = (-z1.re * z2.im + z1.im * z2.re) / (z2.re * z2.re + z2.im * z2.im);
	return t;

}

istream& operator>>(istream& s, complex& z)
{
	s >> z.re >> z.im;
	return s;
}

ostream& operator<<(ostream& s, const complex& z)
{
	s << z.re <<"+I*"<< z.im;
	return s;
}
