diff options
-rw-r--r-- | tests/turandom.c | 25 |
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; |