diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2015-06-03 11:40:21 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2015-06-03 11:40:21 +0000 |
commit | 4ba6ca48dbfde5ca3a108decd974ab92709d9d2a (patch) | |
tree | 766625052e329b4e34b04fe9de89dc016bfe3871 /tests/trint.c | |
parent | f60ee6331689e24f390974d614650a8708637fe3 (diff) | |
download | mpfr-4ba6ca48dbfde5ca3a108decd974ab92709d9d2a.tar.gz |
[tests/trint.c] Also run BASIC_TEST in reduced exponent range
(emin = emax = EXP(x)).
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@9487 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests/trint.c')
-rw-r--r-- | tests/trint.c | 80 |
1 files changed, 48 insertions, 32 deletions
diff --git a/tests/trint.c b/tests/trint.c index 372923d58..d524d502a 100644 --- a/tests/trint.c +++ b/tests/trint.c @@ -149,38 +149,54 @@ special (void) mpfr_clear (y); } -#define BASIC_TEST(F,J) \ - do \ - { \ - int inex1, inex2; \ - unsigned int ex_flags, flags; \ - inex1 = mpfr_set_si (y, J, (mpfr_rnd_t) r); \ - ex_flags = inex1 != 0 ? MPFR_FLAGS_INEXACT : 0; \ - mpfr_clear_flags (); \ - inex2 = mpfr_rint_##F (z, x, (mpfr_rnd_t) r); \ - flags = __gmpfr_flags; \ - if (! (mpfr_equal_p (y, z) && \ - SAME_SIGN (inex1, inex2) && \ - flags == ex_flags)) \ - { \ - printf ("Basic test failed on mpfr_rint_" #F \ - ", prec = %d, i = %d, %s\n", prec, s * i, \ - mpfr_print_rnd_mode ((mpfr_rnd_t) r)); \ - printf ("i.e. x = "); \ - mpfr_dump (x); \ - printf ("Expected "); \ - mpfr_dump (y); \ - printf ("with inex = %d (or equivalent)\n", inex1); \ - printf (" flags:"); \ - flags_out (ex_flags); \ - printf ("Got "); \ - mpfr_dump (z); \ - printf ("with inex = %d (or equivalent)\n", inex2); \ - printf (" flags:"); \ - flags_out (flags); \ - exit (1); \ - } \ - } \ +#define BASIC_TEST(F,J) \ + do \ + { \ + int red; \ + for (red = 0; red <= 1; red++) \ + { \ + int inex1, inex2; \ + unsigned int ex_flags, flags; \ + \ + if (red) \ + { \ + set_emin (e); \ + set_emax (e); \ + } \ + \ + mpfr_clear_flags (); \ + inex1 = mpfr_set_si (y, J, (mpfr_rnd_t) r); \ + ex_flags = __gmpfr_flags; \ + mpfr_clear_flags (); \ + inex2 = mpfr_rint_##F (z, x, (mpfr_rnd_t) r); \ + flags = __gmpfr_flags; \ + if (! (mpfr_equal_p (y, z) && \ + SAME_SIGN (inex1, inex2) && \ + flags == ex_flags)) \ + { \ + printf ("Basic test failed on mpfr_rint_" #F \ + ", prec = %d, i = %d, %s\n", prec, s * i, \ + mpfr_print_rnd_mode ((mpfr_rnd_t) r)); \ + printf ("i.e. x = "); \ + mpfr_dump (x); \ + if (red) \ + printf ("with emin = emax = %d\n", e); \ + printf ("Expected "); \ + mpfr_dump (y); \ + printf ("with inex = %d (or equivalent)\n", inex1); \ + printf (" flags:"); \ + flags_out (ex_flags); \ + printf ("Got "); \ + mpfr_dump (z); \ + printf ("with inex = %d (or equivalent)\n", inex2); \ + printf (" flags:"); \ + flags_out (flags); \ + exit (1); \ + } \ + } \ + set_emin (emin); \ + set_emax (emax); \ + } \ while (0) #define BASIC_TEST2(F,J,INEX) \ |