summaryrefslogtreecommitdiff
path: root/tests/trint.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-06-03 11:40:21 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2015-06-03 11:40:21 +0000
commit4ba6ca48dbfde5ca3a108decd974ab92709d9d2a (patch)
tree766625052e329b4e34b04fe9de89dc016bfe3871 /tests/trint.c
parentf60ee6331689e24f390974d614650a8708637fe3 (diff)
downloadmpfr-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.c80
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) \