diff options
author | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2022-02-26 09:46:52 +0100 |
---|---|---|
committer | Marco Bodrato <bodrato@mail.dm.unipi.it> | 2022-02-26 09:46:52 +0100 |
commit | 13d1e067ee179edad60c743cd66fdfdfc72e7102 (patch) | |
tree | 87472b29f3472f338ec25a48659baf26b01e56a4 /tests | |
parent | b1fe4bb3d32b26d7fd3cfa6edcc320d7622dcc02 (diff) | |
download | gmp-13d1e067ee179edad60c743cd66fdfdfc72e7102.tar.gz |
tests/mpn/t-sqrmod_bknp1.c: Better coverage
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mpn/t-sqrmod_bknp1.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/tests/mpn/t-sqrmod_bknp1.c b/tests/mpn/t-sqrmod_bknp1.c index b28a55a05..37b5cfdf5 100644 --- a/tests/mpn/t-sqrmod_bknp1.c +++ b/tests/mpn/t-sqrmod_bknp1.c @@ -130,15 +130,31 @@ main (int argc, char **argv) + gmp_urandomm_ui (rands, SIZE_LOG + 1 - size_min); k = supported_k[test % numberof (supported_k)]; - n = MIN_N - + gmp_urandomm_ui (rands, (1L << size_range) + 1 - MIN_N); - rn = k * n; - if ((GMP_NUMB_MAX % k != 0) && (rn % 3 == 0)) - n = rn / (k = 3); + if (test < numberof (supported_k)) + { + n = 1; + rn = k; + ap [rn] = 0; + mp_limb_t x = GMP_NUMB_MAX / k + 1; + ap [0] = x; + for (int i = 1; i < k; i += 2) + { + ap [i] = - x; + ap [i + 1] = x - 1; + } + } + else + { + n = MIN_N + + gmp_urandomm_ui (rands, (1L << size_range) + 1 - MIN_N); + rn = k * n; + if ((GMP_NUMB_MAX % k != 0) && (rn % 3 == 0)) + n = rn / (k = 3); - mpn_random2 (ap, rn + 1); + mpn_random2 (ap, rn + 1); - ap [rn] &= 1; + ap [rn] &= 1; + } mpn_random2 (pp-1, rn + 3); p_before = pp[-1]; |