diff options
author | hanrot <hanrot@280ebfd0-de03-0410-8827-d642c229c3f4> | 2000-11-21 15:21:39 +0000 |
---|---|---|
committer | hanrot <hanrot@280ebfd0-de03-0410-8827-d642c229c3f4> | 2000-11-21 15:21:39 +0000 |
commit | 01b2aebd57955fa9514550221f25cb684a792d85 (patch) | |
tree | fafb151cbbdfb4ab3394ca5ba1f8b1cfa3a2bc4c /tests/tabs.c | |
parent | ebb0a24940eb551ce03eb361910c423fee7d6499 (diff) | |
download | mpfr-01b2aebd57955fa9514550221f25cb684a792d85.tar.gz |
Infinis, premiere tentative (tests)
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@794 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'tests/tabs.c')
-rw-r--r-- | tests/tabs.c | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/tests/tabs.c b/tests/tabs.c index dd1df1c6f..8b86cf164 100644 --- a/tests/tabs.c +++ b/tests/tabs.c @@ -27,6 +27,7 @@ MA 02111-1307, USA. */ #ifdef __mips #include <sys/fpu.h> #endif +#define Infp 1/0. extern int isnan(); @@ -55,22 +56,35 @@ int main(int argc, char *argv[]) fprintf(stderr, "Error in mpfr_abs(-1.0)\n"); exit(1); } - n = (argc==1) ? 1000000 : atoi(argv[1]); - for (k = 1; k <= n; k++) - { - d = drand(); - rnd = rand() % 4; - mpfr_set_d(x, d, 0); - mpfr_abs(x, x, rnd); - dd = mpfr_get_d(x); - if (dd != fabs(d) && !isnan(d)) - { - fprintf(stderr, - "Mismatch on d = %1.18g\n", d); - mpfr_print_raw(x); putchar('\n'); - exit(1); - } - } + mpfr_set_d(x, -6/-0., GMP_RNDN); + mpfr_abs(x, x, GMP_RNDN); + if (mpfr_get_d(x) != Infp) { + fprintf(stderr, "Error in mpfr_abs(Inf).\n"); exit(1); + } + + mpfr_set_d(x, 2/-0., GMP_RNDN); + mpfr_abs(x, x, GMP_RNDN); + if (mpfr_get_d(x) != Infp) { + fprintf(stderr, "Error in mpfr_abs(-Inf).\n"); exit(1); + } + + + n = (argc==1) ? 1000000 : atoi(argv[1]); + for (k = 1; k <= n; k++) + { + d = drand(); + rnd = rand() % 4; + mpfr_set_d(x, d, 0); + mpfr_abs(x, x, rnd); + dd = mpfr_get_d(x); + if (dd != fabs(d) && !isnan(d)) + { + fprintf(stderr, + "Mismatch on d = %1.18g\n", d); + mpfr_print_raw(x); putchar('\n'); + exit(1); + } + } mpfr_clear(x); return 0; |