diff options
Diffstat (limited to 'mpq/cmp_si.c')
-rw-r--r-- | mpq/cmp_si.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/mpq/cmp_si.c b/mpq/cmp_si.c index 0a31fe8c9..f21382e5b 100644 --- a/mpq/cmp_si.c +++ b/mpq/cmp_si.c @@ -1,6 +1,6 @@ /* _mpq_cmp_si -- compare mpq and long/ulong fraction. -Copyright 2001, 2013 Free Software Foundation, Inc. +Copyright 2001, 2013, 2014 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -42,26 +42,20 @@ _mpq_cmp_si (mpq_srcptr q, long n, unsigned long d) /* need canonical sign to get right result */ ASSERT (SIZ(DEN(q)) > 0); + if (n >= 0) + return _mpq_cmp_ui (q, n, d); if (SIZ(NUM(q)) >= 0) { - if (n >= 0) - return _mpq_cmp_ui (q, n, d); /* >=0 cmp >=0 */ - else - return 1; /* >=0 cmp <0 */ + return 1; /* >=0 cmp <0 */ } else { - if (n >= 0) - return -1; /* <0 cmp >=0 */ - else - { - mpq_t qabs; - SIZ(NUM(qabs)) = ABSIZ(NUM(q)); - PTR(NUM(qabs)) = PTR(NUM(q)); - SIZ(DEN(qabs)) = SIZ(DEN(q)); - PTR(DEN(qabs)) = PTR(DEN(q)); + mpq_t qabs; + SIZ(NUM(qabs)) = -SIZ(NUM(q)); + PTR(NUM(qabs)) = PTR(NUM(q)); + SIZ(DEN(qabs)) = SIZ(DEN(q)); + PTR(DEN(qabs)) = PTR(DEN(q)); - return - _mpq_cmp_ui (qabs, NEG_CAST (unsigned long, n), d); /* <0 cmp <0 */ - } + return - _mpq_cmp_ui (qabs, NEG_CAST (unsigned long, n), d); /* <0 cmp <0 */ } } |