summaryrefslogtreecommitdiff
path: root/tests/tset_z.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2004-02-14 23:05:51 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2004-02-14 23:05:51 +0000
commit6e5ffc68a8061e42a2680dd99455f89e2f4f8ca9 (patch)
tree3150eedf9dc6ae8d160042147ff46ac533e723dd /tests/tset_z.c
parentf095a6c8a44a63379841097ddfbf4682e56e4036 (diff)
downloadmpfr-6e5ffc68a8061e42a2680dd99455f89e2f4f8ca9.tar.gz
new coverage tests
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2714 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests/tset_z.c')
-rw-r--r--tests/tset_z.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/tset_z.c b/tests/tset_z.c
index 630b6e950..f0f49f5fc 100644
--- a/tests/tset_z.c
+++ b/tests/tset_z.c
@@ -77,10 +77,12 @@ check_large (void)
{
mpz_t z;
mpfr_t x, y;
+ mp_exp_t emax, emin;
mpz_init (z);
mpfr_init2 (x, 160);
mpfr_init2 (y, 160);
+
mpz_set_str (z, "77031627725494291259359895954016675357279104942148788042", 10);
mpfr_set_z (x, z, GMP_RNDN);
mpfr_set_str_binary (y, "0.1100100100001111110110101010001000100001011010001100001000110100110001001100011001100010100010111000000011011100000111001101000100101001000000100100111000001001E186");
@@ -89,6 +91,31 @@ check_large (void)
printf ("Error in mpfr_set_z on large input\n");
exit (1);
}
+
+ /* check overflow */
+ emax = mpfr_get_emax ();
+ mpfr_set_emax (2);
+ mpz_set_str (z, "7", 10);
+ mpfr_set_z (x, z, GMP_RNDU);
+ MPFR_ASSERTN(mpfr_inf_p (x) && mpfr_sgn (x) > 0);
+ mpfr_set_emax (3);
+ mpfr_set_prec (x, 2);
+ mpz_set_str (z, "7", 10);
+ mpfr_set_z (x, z, GMP_RNDU);
+ MPFR_ASSERTN(mpfr_inf_p (x) && mpfr_sgn (x) > 0);
+ mpfr_set_emax (emax);
+
+ /* check underflow */
+ emin = mpfr_get_emin ();
+ mpfr_set_emin (3);
+ mpz_set_str (z, "1", 10);
+ mpfr_set_z (x, z, GMP_RNDZ);
+ MPFR_ASSERTN(mpfr_cmp_ui (x, 0) == 0 && MPFR_IS_POS(x));
+ mpfr_set_emin (2);
+ mpfr_set_z (x, z, GMP_RNDN);
+ MPFR_ASSERTN(mpfr_cmp_ui (x, 0) == 0 && MPFR_IS_POS(x));
+ mpfr_set_emin (emin);
+
mpz_clear (z);
mpfr_clear (x);
mpfr_clear (y);