diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-12-06 10:33:45 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2012-12-06 10:33:45 +0100 |
commit | 59bc8e8ad67150416f64ad9880020aa8c822bc53 (patch) | |
tree | 790a06a36988f8a3f87548a3655c5350cb2c2048 /tests | |
parent | 226c3253c5e543d0d4d126b51842c72bf6c41a4b (diff) | |
download | gmp-59bc8e8ad67150416f64ad9880020aa8c822bc53.tar.gz |
tests/mpq/reuse.c: reset vars every now and then.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mpq/reuse.c | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/tests/mpq/reuse.c b/tests/mpq/reuse.c index 8a9eb493b..a9bfb64f4 100644 --- a/tests/mpq/reuse.c +++ b/tests/mpq/reuse.c @@ -90,7 +90,7 @@ main (int argc, char **argv) int i; int pass, reps = 100; mpq_t in1, in2, out1; - unsigned long int in1i, in2i; + unsigned long int randbits, in2i; mpq_t res1, res2, res3; gmp_randstate_ptr rands; @@ -110,20 +110,32 @@ main (int argc, char **argv) for (pass = 1; pass <= reps; pass++) { - in2i = urandom (); + randbits = urandom (); + if (randbits & 1) + { + mpq_clear (in1); + mpq_init (in1); + } + randbits >>= 1; mpz_errandomb (mpq_numref(in1), rands, 512L); mpz_errandomb_nonzero (mpq_denref(in1), rands, 512L); - if (in2i & 1) + if (randbits & 1) mpz_neg (mpq_numref(in1),mpq_numref(in1)); - in2i >>= 1; + randbits >>= 1; mpq_canonicalize (in1); + if (randbits & 1) + { + mpq_clear (in2); + mpq_init (in2); + } + randbits >>= 1; mpz_errandomb (mpq_numref(in2), rands, 512L); mpz_errandomb_nonzero (mpq_denref(in2), rands, 512L); - if (in2i & 1) + if (randbits & 1) mpz_neg (mpq_numref(in2),mpq_numref(in2)); - in2i >>= 1; + randbits >>= 1; mpq_canonicalize (in2); for (i = 0; i < sizeof (dss_funcs) / sizeof (dss_func); i++) @@ -132,6 +144,13 @@ main (int argc, char **argv) if (i == 0 && mpq_cmp_ui (in2, 0, 1) == 0) continue; + if (randbits & 1) + { + mpq_clear (res1); + mpq_init (res1); + } + randbits >>= 1; + (dss_funcs[i]) (res1, in1, in2); mpq_set (out1, in1); @@ -150,6 +169,12 @@ main (int argc, char **argv) for (i = 0; i < sizeof (ds_funcs) / sizeof (ds_func); i++) { + if (randbits & 1) + { + mpq_clear (res1); + mpq_init (res1); + } + randbits >>= 1; (ds_funcs[i]) (res1, in1); mpq_set (out1, in1); @@ -160,9 +185,16 @@ main (int argc, char **argv) dump_abort (ds_func_names[i], res1, res2); } - in2i %= 65536; + in2i = urandom () % 65536; for (i = 0; i < sizeof (dsi_funcs) / sizeof (dsi_func); i++) { + if (randbits & 1) + { + mpq_clear (res1); + mpq_init (res1); + } + randbits >>= 1; + (dsi_funcs[i]) (res1, in1, in2i); mpq_set (out1, in1); |