summaryrefslogtreecommitdiff
path: root/src/gmp_op.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2010-08-23 15:24:10 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2010-08-23 15:24:10 +0000
commit00784d65fec03d584018d207266f49b7cb6a8210 (patch)
tree2f1e03462606771da4c1cf559f636958ad402b2c /src/gmp_op.c
parent9377efdfdcb6fe589d8e16234ca3e3f388bf57d9 (diff)
downloadmpfr-00784d65fec03d584018d207266f49b7cb6a8210.tar.gz
[src/gmp_op.c] Extend the exponent range in mpfr_cmp_q and mpfr_cmp_f.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@7106 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/gmp_op.c')
-rw-r--r--src/gmp_op.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gmp_op.c b/src/gmp_op.c
index 756b890d4..3486afba7 100644
--- a/src/gmp_op.c
+++ b/src/gmp_op.c
@@ -409,14 +409,19 @@ mpfr_cmp_q (mpfr_srcptr x, mpq_srcptr z)
mpfr_t t;
int res;
mpfr_prec_t p;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
+
/* x < a/b ? <=> x*b < a */
MPFR_ASSERTD (mpz_sgn (mpq_denref (z)) != 0);
MPFR_MPZ_SIZEINBASE2 (p, mpq_denref (z));
mpfr_init2 (t, MPFR_PREC(x) + p);
- res = mpfr_mul_z (t, x, mpq_denref (z), MPFR_RNDN );
+ res = mpfr_mul_z (t, x, mpq_denref (z), MPFR_RNDN);
MPFR_ASSERTD (res == 0);
- res = mpfr_cmp_z (t, mpq_numref (z) );
+ res = mpfr_cmp_z (t, mpq_numref (z));
mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
return res;
}
@@ -425,11 +430,15 @@ mpfr_cmp_f (mpfr_srcptr x, mpf_srcptr z)
{
mpfr_t t;
int res;
+ MPFR_SAVE_EXPO_DECL (expo);
+
+ MPFR_SAVE_EXPO_MARK (expo);
mpfr_init2 (t, MPFR_PREC_MIN + ABS(SIZ(z)) * GMP_NUMB_BITS );
res = mpfr_set_f (t, z, MPFR_RNDN);
MPFR_ASSERTD (res == 0);
res = mpfr_cmp (x, t);
mpfr_clear (t);
+ MPFR_SAVE_EXPO_FREE (expo);
return res;
}