summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2007-01-19 06:39:23 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2007-01-19 06:39:23 +0000
commit84fe0ffc2aaf55c51ff20bddff76d0a659a18aaa (patch)
tree2fa1583fc32fb9badc69eefcb4de2ef00a5746ee /tests
parent62214bf0dec9074871051f6864b56d3199a9975a (diff)
downloadmpfr-84fe0ffc2aaf55c51ff20bddff76d0a659a18aaa.tar.gz
tests/tpow.c: corrected tests and added another test.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@4340 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests')
-rw-r--r--tests/tpow.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/tests/tpow.c b/tests/tpow.c
index c268f6bba..5a4c70997 100644
--- a/tests/tpow.c
+++ b/tests/tpow.c
@@ -276,25 +276,36 @@ check_pow_si (void)
MPFR_ASSERTN(mpfr_inf_p (x) && mpfr_sgn (x) > 0);
mpfr_set_si (x, 2, GMP_RNDN);
- mpfr_pow_si (x, x, LONG_MAX, GMP_RNDN);
- if (LONG_MAX > mpfr_get_emax () - 1)
+ mpfr_pow_si (x, x, LONG_MAX, GMP_RNDN); /* 2^LONG_MAX */
+ if (LONG_MAX > mpfr_get_emax () - 1) /* LONG_MAX + 1 > emax */
{
MPFR_ASSERTN (mpfr_inf_p (x));
}
else
{
- MPFR_ASSERTN (mpfr_cmp_si_2exp (x, 2, LONG_MAX));
+ MPFR_ASSERTN (mpfr_cmp_si_2exp (x, 1, LONG_MAX));
}
mpfr_set_si (x, 2, GMP_RNDN);
- mpfr_pow_si (x, x, LONG_MIN, GMP_RNDN);
+ mpfr_pow_si (x, x, LONG_MIN, GMP_RNDN); /* 2^LONG_MIN */
if (LONG_MIN + 1 < mpfr_get_emin ())
{
MPFR_ASSERTN (mpfr_zero_p (x));
}
else
{
- MPFR_ASSERTN (mpfr_cmp_si_2exp (x, 2, LONG_MIN));
+ MPFR_ASSERTN (mpfr_cmp_si_2exp (x, 1, LONG_MIN));
+ }
+
+ mpfr_set_si_2exp (x, 1, -1, GMP_RNDN); /* 0.5 */
+ mpfr_pow_si (x, x, LONG_MIN, GMP_RNDN); /* 2^(-LONG_MIN) */
+ if (LONG_MIN < mpfr_get_emax () + 1) /* 1 - LONG_MIN > emax */
+ {
+ MPFR_ASSERTN (mpfr_inf_p (x));
+ }
+ else
+ {
+ MPFR_ASSERTN (mpfr_cmp_si_2exp (x, 2, - (LONG_MIN + 1)));
}
mpfr_clear (x);