summaryrefslogtreecommitdiff
path: root/tests/tpow.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2011-10-25 14:54:32 +0000
committerzimmerma <zimmerma@211d60ee-9f03-0410-a15a-8952a2c7a4e4>2011-10-25 14:54:32 +0000
commitffb9112cdb6185b077e8653ca7185b49d7b8184c (patch)
treefe4f4922d01029f5871276123ed2f5cbe3f1b6c9 /tests/tpow.c
parent1a4523a49bb41456de04199d8eb8b4c6ab7a174e (diff)
downloadmpc-ffb9112cdb6185b077e8653ca7185b49d7b8184c.tar.gz
[src/pow.c] fixed further overlapping bug
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1105 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'tests/tpow.c')
-rw-r--r--tests/tpow.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/tests/tpow.c b/tests/tpow.c
index df3fc95..43f89f1 100644
--- a/tests/tpow.c
+++ b/tests/tpow.c
@@ -28,24 +28,28 @@ reuse_bug (void)
mpc_t x, y, z;
mp_prec_t prec = 2;
- mpc_init2 (x, prec);
- mpc_init2 (y, prec);
- mpc_init2 (z, prec);
+ for (prec = 2; prec <= 20; prec ++)
+ {
+ mpc_init2 (x, prec);
+ mpc_init2 (y, prec);
+ mpc_init2 (z, prec);
- mpfr_set_ui (MPC_RE (x), 0ul, GMP_RNDN);
- mpfr_set_ui_2exp (MPC_IM (x), 3ul, -2, GMP_RNDN);
- mpc_set_ui (y, 8ul, MPC_RNDNN);
-
- mpc_pow (z, x, y, MPC_RNDNN);
- mpc_pow (y, x, y, MPC_RNDNN);
- if (mpfr_signbit (MPC_IM (y)) == 0 && mpfr_signbit (MPC_IM (z)) != 0) {
- printf ("Error: regression, reuse_bug reproduced\n");
- exit (1);
- }
-
- mpc_clear (x);
- mpc_clear (y);
- mpc_clear (z);
+ mpfr_set_ui (MPC_RE (x), 0ul, GMP_RNDN);
+ mpfr_set_ui_2exp (MPC_IM (x), 3ul, -2, GMP_RNDN);
+ mpc_set_ui (y, 8ul, MPC_RNDNN);
+
+ mpc_pow (z, x, y, MPC_RNDNN);
+ mpc_pow (y, x, y, MPC_RNDNN);
+ if (mpfr_signbit (MPC_IM (y)) != mpfr_signbit (MPC_IM (z)))
+ {
+ printf ("Error: regression, reuse_bug reproduced\n");
+ exit (1);
+ }
+
+ mpc_clear (x);
+ mpc_clear (y);
+ mpc_clear (z);
+ }
}
@@ -56,11 +60,11 @@ main (void)
test_start ();
+ reuse_bug ();
+
data_check (f, "pow.dat");
tgeneric (f, 2, 1024, 7, 10);
- reuse_bug ();
-
test_end ();
return 0;