From 032a7da930fe1513c0c2e08e6f5c6cc292aa21a0 Mon Sep 17 00:00:00 2001 From: uhliksk Date: Thu, 14 Mar 2019 04:09:01 +0100 Subject: [PATCH] Fix gcdrat to return correct optimization only --- src/CalcManager/Ratpack/rat.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/CalcManager/Ratpack/rat.cpp b/src/CalcManager/Ratpack/rat.cpp index 2d71dc24..d2b6d7d8 100644 --- a/src/CalcManager/Ratpack/rat.cpp +++ b/src/CalcManager/Ratpack/rat.cpp @@ -44,7 +44,7 @@ void gcdrat( PRAT *pa, int32_t precision) PNUMBER pgcd= nullptr; PRAT a= nullptr; - a=*pa; + DUPRAT(a,*pa); pgcd = gcd( a->pp, a->pq ); if ( !zernum( pgcd ) ) @@ -54,9 +54,14 @@ void gcdrat( PRAT *pa, int32_t precision) } destroynum( pgcd ); - *pa=a; - RENORMALIZE(*pa); + RENORMALIZE(a); + + if (rat_equ(*pa, a, precision)) + { + DUPRAT(*pa, a); + } + destroyrat(a); } //-----------------------------------------------------------------------------