diff options
Diffstat (limited to 'tests/tlog.c')
-rw-r--r-- | tests/tlog.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/tests/tlog.c b/tests/tlog.c index 168d6d802..af388488e 100644 --- a/tests/tlog.c +++ b/tests/tlog.c @@ -64,24 +64,27 @@ check1 (double a, mp_rnd_t rnd_mode, double res1, int ck, int max_ulp) { mpfr_t ta, tres; double res2; - int diff=0; + int diff = 0; /* ck=1 iff res1 is certified correct */ - mpfr_init2(ta, 53); - mpfr_init2(tres, 53); - mpfr_set_d(ta, a, GMP_RNDN); - mpfr_log(tres, ta, rnd_mode); - res2=mpfr_get_d1 (tres); - mpfr_clear(ta); mpfr_clear(tres); - - if (res1!=res2 && (!isnan(res1) || !isnan(res2))) { - diff = ulp(res1,res2); - printf("mpfr_log failed for a=%1.20e, rnd_mode=%s\n", a, - mpfr_print_rnd_mode(rnd_mode)); - printf("correct result is %1.20e\n mpfr_log gives %1.20e (%d ulp)\n",res1,res2,ulp(res1,res2)); - exit(1); - } - if (!isnan(res1) || !isnan(res2)) + mpfr_init2 (ta, 53); + mpfr_init2 (tres, 53); + mpfr_set_d (ta, a, GMP_RNDN); + mpfr_log (tres, ta, rnd_mode); + res2 = mpfr_get_d1 (tres); + mpfr_clear (ta); + mpfr_clear (tres); + + if (res1 != res2 && !(Isnan(res1) && Isnan(res2))) + { + diff = ulp (res1,res2); + printf ("mpfr_log failed for a=%1.20e, rnd_mode=%s\n", a, + mpfr_print_rnd_mode (rnd_mode)); + printf ("correct result is %1.20e\n mpfr_log gives %1.20e (%d ulp)\n", + res1, res2, ulp (res1,res2)); + exit (1); + } + if (!Isnan(res1) || !Isnan(res2)) return diff; else return 0; |