/*
	Copyright (C) 1999-2017 Claude SIMON (http://q37.info/contact/).

	This file is part of the Epeios framework.

	The Epeios framework is free software: you can redistribute it and/or
	modify it under the terms of the GNU Affero General Public License as
	published by the Free Software Foundation, either version 3 of the
	License, or (at your option) any later version.

	The Epeios framework is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
	Affero General Public License for more details.

	You should have received a copy of the GNU Affero General Public License
	along with the Epeios framework.  If not, see <http://www.gnu.org/licenses/>
*/

#define MTHRTN_COMPILATION_

#include "mthrtn.h"

using namespace mthrtn;

void mthrtn::Normalize( dRational &Rational )
{
qRH
	integer PGCD;
qRB
	PGCD.Init();

	mthitg::PGCD( Rational.N, Rational.D, PGCD );

	if ( Rational.D.GetSign() < 0 )
		PGCD.Negate();

	mthitg::Div( Rational.N, PGCD, Rational.N );
	mthitg::Div( Rational.D, PGCD, Rational.D );
qRR
qRT
qRE
}
