summaryrefslogtreecommitdiff
path: root/cmp2.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-04-05 18:29:03 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2001-04-05 18:29:03 +0000
commitdda89f8c232c52bcca9be31a5a9ef59218cc7736 (patch)
treec9a83d4160bfc9d1d8ebb464d2fb29bf12df2c1e /cmp2.c
parentc968861d7ba024ee2e4d45429ae376180d98311a (diff)
downloadmpfr-dda89f8c232c52bcca9be31a5a9ef59218cc7736.tar.gz
check apart the case c=0 (otherwise some low significant limbs may be
non zero, which may produce a wrong result) git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1070 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'cmp2.c')
-rw-r--r--cmp2.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/cmp2.c b/cmp2.c
index aeb8f7c78..33d2b0cc9 100644
--- a/cmp2.c
+++ b/cmp2.c
@@ -30,6 +30,8 @@ MA 02111-1307, USA. */
Assumes b>=c, which implies MPFR_EXP(b)>=MPFR_EXP(c).
if b=c, returns prec(b).
+ Assumes neither of b or c is NaN or +/- infinity.
+
In other terms mpfr_cmp2 (b, c) returns EXP(b) - EXP(b-c).
*/
unsigned long
@@ -39,6 +41,8 @@ mpfr_cmp2 (mpfr_srcptr b, mpfr_srcptr c)
long bn, cn, z;
unsigned long diff_exp, res = 0;
+ if (MPFR_IS_ZERO(c)) return 0;
+
bp = MPFR_MANT(b);
cp = MPFR_MANT(c);