// Fraction.cpp: implementation of the Fraction class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Optima.h"
#include "Fraction.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Fraction::Fraction()
{
n=0;
d=1;

}

Fraction::~Fraction()
{

}

Fraction operator *(Fraction a,Fraction b)
{
	Fraction c;
	c.n=a.n*b.n;
	c.d=a.d*b.d;
	c.Lower();
	return c;
}


Fraction operator +(Fraction a,Fraction b)
{
	Fraction c;
	c.n=a.n*b.d+b.n*a.d;
	c.d=a.d*b.d;
	c.Lower();
	return c;
}

Fraction operator -(Fraction a,Fraction b)
{
	Fraction c;
	c.n=a.n*b.d-b.n*a.d;
	c.d=a.d*b.d;
	c.Lower();
	return c;
}


Fraction operator /(Fraction a,Fraction b)
{
	Fraction c;
	c.n=a.n*b.d;
	c.d=a.d*b.n;
	c.Lower();
	return c;
}


Fraction Fraction::operator =(Fraction a)
{
	
	n=a.n;
	d=a.d;
	return a;
}

int operator <(Fraction a,Fraction b)
{
	if(float(a)<float(b)) return 1;
	else return 0;
	
}


int operator >(Fraction a,Fraction b)
{
	if(float(a)>float(b)) return 1;
	else return 0;
	
}

int operator >=(Fraction a,Fraction b)
{
	if(a>b || a==b) return 1;
	else return 0;
	
}

int operator <=(Fraction a,Fraction b)
{
	if(a<b || a==b) return 1;
	else return 0;
	
}

int operator !=(Fraction a,Fraction b)
{
	if(!(a==b)) return 1;
	else return 0;
	
}

int operator ==(Fraction a,Fraction b)
{
	a.Lower(); b.Lower();
	
	if(a.n==b.n && a.d==b.d) return 1;
	else return 0;

}

Fraction operator +=(Fraction& a,Fraction b)
{
	a=a+b;
	return a;
}

Fraction operator -=(Fraction& a,Fraction b)
{
	a=a-b;
	return a;
}

Fraction operator *=(Fraction& a,Fraction b)
{
	a=a*b;
	return a;
}

Fraction operator /=(Fraction& a,Fraction b)
{
	a=a/b;
	return a;
}







