diff options
Diffstat (limited to 'src/invalid/invalid_thread.c')
| -rw-r--r-- | src/invalid/invalid_thread.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/invalid/invalid_thread.c b/src/invalid/invalid_thread.c index b94e456..be2c4aa 100644 --- a/src/invalid/invalid_thread.c +++ b/src/invalid/invalid_thread.c @@ -14,6 +14,10 @@ void *invalid_thread(void *arg) { pari_thread_start(thread->pari_thread); random_init(); arg_t *invalid_argss[OFFSET_END]; + exhaustive_t invalid_setup = {.generators = thread->setup->generators, + .validators = thread->setup->validators, + .argss = invalid_argss, + .unrolls = thread->setup->unrolls}; curve_t *invalid = curve_new(); invalid->field = gcopy(thread->original_curve->field); @@ -21,8 +25,8 @@ void *invalid_thread(void *arg) { while (*thread->generated < thread->nprimes) { pari_sp btop = avma; - exhaustive_gen(invalid, thread->cfg, thread->gens, NULL, - thread->unrolls, OFFSET_B, OFFSET_GENERATORS); + exhaustive_gen(invalid, thread->cfg, thread->setup, OFFSET_B, + OFFSET_GENERATORS); size_t ndivides = 0; for (size_t i = thread->nprimes; i-- > 0;) { if (dvdis(invalid->order, thread->primes[i])) { @@ -33,8 +37,7 @@ void *invalid_thread(void *arg) { debug("ndivides = %lu\n", ndivides); if (ndivides > 0 && - exhaustive_gen_retry(invalid, thread->cfg, thread->gens, - invalid_argss, thread->unrolls, + exhaustive_gen_retry(invalid, thread->cfg, &invalid_setup, OFFSET_GENERATORS, OFFSET_POINTS, 1)) { pthread_mutex_lock(thread->mutex_state); size_t nfree = 0; @@ -55,9 +58,8 @@ void *invalid_thread(void *arg) { if (nfree > 0) { arg_t prime_divisors = {primes, nprimes}; invalid_argss[OFFSET_POINTS] = &prime_divisors; - exhaustive_gen(invalid, thread->cfg, thread->gens, - invalid_argss, thread->unrolls, OFFSET_POINTS, - OFFSET_END); + exhaustive_gen(invalid, thread->cfg, &invalid_setup, + OFFSET_POINTS, OFFSET_END); pthread_mutex_lock(thread->mutex_state); size_t count = 0; |
