public void Reduce()
{
// Two wrongs do make a right.
if( A < 0 && B < 0 )
Reverse();
else if( B < 0 )
{
// Normalize so that A is always < 0 for negatives.
Reverse();
}
if( 0 == B )
{
//Debug.Assert( false );
A = 0;
B = 1;
return;
}
if( 0 == A )
{
B = 1;
return;
}
int gcd = GCD( System.Math.Abs( A ), System.Math.Abs( B ) );
A = A / gcd;
B = B / gcd;
}