summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2017-08-29 12:52:50 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2017-08-29 12:52:50 +0000
commitd31dcf6717d8e24ee96c99e95b85c1d7311d8c70 (patch)
treee2c96b102bb82a8fef43c73c280381290825f4ad
parent7ae9ac24e27e621a4b428bb55aa35e47ca94de48 (diff)
downloadmpfr-d31dcf6717d8e24ee96c99e95b85c1d7311d8c70.tar.gz
added test_underflow()
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/branches/3.1@11691 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r--tests/turandom.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/turandom.c b/tests/turandom.c
index 0c0129dfa..03f7f62a8 100644
--- a/tests/turandom.c
+++ b/tests/turandom.c
@@ -309,6 +309,30 @@ underflow_tests (void)
}
static void
+test_underflow (int verbose)
+{
+ mpfr_t x;
+ mpfr_exp_t emin = mpfr_get_emin ();
+ int i, exp[5] = {0, 0, 0, 0, 0};
+
+ mpfr_init2 (x, 2);
+ mpfr_set_emin (-3);
+ for (i = 0; i < 1000000; i++)
+ {
+ mpfr_urandom (x, RANDS, MPFR_RNDN);
+ if (mpfr_zero_p (x))
+ exp[4] ++;
+ else
+ exp[-mpfr_get_exp(x)] ++;
+ }
+ if (verbose)
+ printf ("exp=0:%d -1:%d -2:%d -3:%d x=0:%d\n",
+ exp[0], exp[1], exp[2], exp[3], exp[4]);
+ mpfr_clear (x);
+ mpfr_set_emin (emin);
+}
+
+static void
overflow_tests (void)
{
mpfr_t x;
@@ -517,6 +541,7 @@ main (int argc, char *argv[])
bug20100914 ();
bug20170123 ();
reprod_abi ();
+ test_underflow (verbose);
tests_end_mpfr ();
return 0;