From 0f939b626e99a0da91b35d73637b2905ec9d1e16 Mon Sep 17 00:00:00 2001 From: Marco Bodrato Date: Wed, 28 Feb 2018 08:22:48 +0100 Subject: gmpxx.h (__gmp_binary_equal): Optimised comparison mpq == integer. --- gmpxx.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gmpxx.h') diff --git a/gmpxx.h b/gmpxx.h index 3d778689a..300ed62e6 100644 --- a/gmpxx.h +++ b/gmpxx.h @@ -981,11 +981,11 @@ struct __gmp_binary_equal { return mpq_equal(q, r) != 0; } static bool eval(mpq_srcptr q, unsigned long int l) - { return mpq_cmp_ui(q, l, 1) == 0; } + { return mpz_cmp_ui(mpq_denref(q), 1) == 0 && mpz_cmp_ui(mpq_numref(q), l) == 0; } static bool eval(unsigned long int l, mpq_srcptr q) { return eval(q, l); } static bool eval(mpq_srcptr q, signed long int l) - { return mpq_cmp_si(q, l, 1) == 0; } + { return mpz_cmp_ui(mpq_denref(q), 1) == 0 && mpz_cmp_si(mpq_numref(q), l) == 0; } static bool eval(signed long int l, mpq_srcptr q) { return eval(q, l); } static bool eval(mpq_srcptr q, double d) @@ -993,7 +993,7 @@ struct __gmp_binary_equal static bool eval(double d, mpq_srcptr q) { return eval(q, d); } static bool eval(mpq_srcptr q, mpz_srcptr z) - { return mpq_cmp_z(q, z) == 0; } + { return mpz_cmp_ui(mpq_denref(q), 1) == 0 && mpz_cmp(mpq_numref(q), z) == 0; } static bool eval(mpz_srcptr z, mpq_srcptr q) { return eval(q, z); } -- cgit v1.2.1