summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarco Bodrato <bodrato@mail.dm.unipi.it>2022-02-26 09:46:52 +0100
committerMarco Bodrato <bodrato@mail.dm.unipi.it>2022-02-26 09:46:52 +0100
commit13d1e067ee179edad60c743cd66fdfdfc72e7102 (patch)
tree87472b29f3472f338ec25a48659baf26b01e56a4 /tests
parentb1fe4bb3d32b26d7fd3cfa6edcc320d7622dcc02 (diff)
downloadgmp-13d1e067ee179edad60c743cd66fdfdfc72e7102.tar.gz
tests/mpn/t-sqrmod_bknp1.c: Better coverage
Diffstat (limited to 'tests')
-rw-r--r--tests/mpn/t-sqrmod_bknp1.c30
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];