summaryrefslogtreecommitdiff
path: root/gmpxx.h
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2018-03-03 15:55:53 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2018-03-03 15:55:53 +0100
commit73c94b171cf23a69804d64b4332116a53c0ca23b (patch)
tree9d2ef492d3b0772660015dfe37080079c05e743e /gmpxx.h
parentc9d562990c0bb995d1d9be89434642d8a7433579 (diff)
downloadgmp-73c94b171cf23a69804d64b4332116a53c0ca23b.tar.gz
gmpxx.h: Special handling for mpq==0
Diffstat (limited to 'gmpxx.h')
-rw-r--r--gmpxx.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/gmpxx.h b/gmpxx.h
index 300ed62e6..0342116ef 100644
--- a/gmpxx.h
+++ b/gmpxx.h
@@ -1,6 +1,7 @@
/* gmpxx.h -- C++ class wrapper for GMP types. -*- C++ -*-
-Copyright 2001-2003, 2006, 2008, 2011-2015 Free Software Foundation, Inc.
+Copyright 2001-2003, 2006, 2008, 2011-2015, 2018 Free Software
+Foundation, Inc.
This file is part of the GNU MP Library.
@@ -981,11 +982,15 @@ struct __gmp_binary_equal
{ return mpq_equal(q, r) != 0; }
static bool eval(mpq_srcptr q, unsigned long int l)
- { return mpz_cmp_ui(mpq_denref(q), 1) == 0 && mpz_cmp_ui(mpq_numref(q), l) == 0; }
+ { return ((__GMPXX_CONSTANT(l) && l == 0) ||
+ 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 mpz_cmp_ui(mpq_denref(q), 1) == 0 && mpz_cmp_si(mpq_numref(q), l) == 0; }
+ { return ((__GMPXX_CONSTANT(l) && l == 0) ||
+ 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)