diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2018-02-28 08:22:48 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2018-02-28 08:22:48 +0100 |
commit | 0f939b626e99a0da91b35d73637b2905ec9d1e16 (patch) | |
tree | 5ba46f9b3e5dbe2dc402d20027a8437d0c303fe1 /gmpxx.h | |
parent | 1365b59a8e61268351ede67b1366e566b2ddf721 (diff) | |
download | gmp-0f939b626e99a0da91b35d73637b2905ec9d1e16.tar.gz |
gmpxx.h (__gmp_binary_equal): Optimised comparison mpq == integer.
Diffstat (limited to 'gmpxx.h')
-rw-r--r-- | gmpxx.h | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -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); } |