Fix gcdrat to return correct optimization only

This commit is contained in:
uhliksk 2019-03-14 04:09:01 +01:00
commit 032a7da930

View file

@ -44,7 +44,7 @@ void gcdrat( PRAT *pa, int32_t precision)
PNUMBER pgcd= nullptr; PNUMBER pgcd= nullptr;
PRAT a= nullptr; PRAT a= nullptr;
a=*pa; DUPRAT(a,*pa);
pgcd = gcd( a->pp, a->pq ); pgcd = gcd( a->pp, a->pq );
if ( !zernum( pgcd ) ) if ( !zernum( pgcd ) )
@ -54,9 +54,14 @@ void gcdrat( PRAT *pa, int32_t precision)
} }
destroynum( pgcd ); destroynum( pgcd );
*pa=a;
RENORMALIZE(*pa); RENORMALIZE(a);
if (rat_equ(*pa, a, precision))
{
DUPRAT(*pa, a);
}
destroyrat(a);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------