From 2cf2eec873cb11f2f0767aac41da0f56dbd27cb9 Mon Sep 17 00:00:00 2001 From: J08nY Date: Mon, 10 Apr 2017 23:47:46 +0200 Subject: Added unroll functions, to generalize going back in exhaustive generation --- src/invalid/invalid_thread.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/invalid/invalid_thread.c') diff --git a/src/invalid/invalid_thread.c b/src/invalid/invalid_thread.c index 2f61ffa..a06bafa 100644 --- a/src/invalid/invalid_thread.c +++ b/src/invalid/invalid_thread.c @@ -22,8 +22,8 @@ void *invalid_thread(void *arg) { while (*thread->generated < thread->nprimes) { pari_sp btop = avma; - exhaustive_gen(invalid, thread->cfg, thread->gens, NULL, OFFSET_B, - OFFSET_GENERATORS); + exhaustive_gen(invalid, thread->cfg, thread->gens, NULL, + thread->unrolls, OFFSET_B, OFFSET_GENERATORS); size_t ndivides = 0; for (size_t i = thread->nprimes; i-- > 0;) { if (dvdis(invalid->order, thread->primes[i])) { @@ -53,7 +53,8 @@ void *invalid_thread(void *arg) { arg_t prime_divisors = {primes, nprimes}; invalid_argss[OFFSET_POINTS] = &prime_divisors; exhaustive_gen(invalid, thread->cfg, thread->gens, - invalid_argss, OFFSET_GENERATORS, OFFSET_END); + invalid_argss, thread->unrolls, + OFFSET_GENERATORS, OFFSET_END); pthread_mutex_lock(thread->mutex_state); size_t count = 0; @@ -77,11 +78,11 @@ void *invalid_thread(void *arg) { invalid->field = gcopy(thread->original_curve->field); invalid->a = gcopy(thread->original_curve->a); } else { - obj_free(invalid->curve); // necessary to free the ellinit + curve_unroll(invalid, thread->cfg, avma, btop); avma = btop; } } else { - obj_free(invalid->curve); // necessary to free the ellinit + curve_unroll(invalid, thread->cfg, avma, btop); avma = btop; } } -- cgit v1.2.3-70-g09d2