From 3d92926a902017e7cf1f5738e99ff62da596ce12 Mon Sep 17 00:00:00 2001 From: Ethan Werner Date: Sun, 9 Aug 2026 15:02:21 +0400 Subject: refactor --- lib/gcd.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'lib/gcd.c') diff --git a/lib/gcd.c b/lib/gcd.c index 44068cf..8ca3861 100644 --- a/lib/gcd.c +++ b/lib/gcd.c @@ -31,18 +31,25 @@ int ts_gcd( { TS_PROLOGUE( ts_gcd_p ); (void)c; - for( uint_t i = 0; i < n; ++i ) - { - long a = (long)fabs(x[0][i]); - long b = (long)fabs(x[1][i]); - while( b ) - { - long t = b; - b = a % b; - a = t; - } - y[0][i] = (fp_t)a; - } + for( uint_t i = 0; i < n; ++i ) + { + fp_t ax = fabs(x[0][i]); + fp_t bx = fabs(x[1][i]); + if (ax > 9223372036854775807.0 || bx > 9223372036854775807.0) + { + y[0][i] = 0; + continue; + } + long a = (long)ax; + long b = (long)bx; + while( b ) + { + long t = b; + b = a % b; + a = t; + } + y[0][i] = (fp_t)fabs((fp_t)a); + } return 0; } -- cgit v1.3.1