diff options
| author | J08nY | 2018-02-03 21:58:03 +0100 |
|---|---|---|
| committer | J08nY | 2018-02-03 21:58:03 +0100 |
| commit | dedb8c3f127a3198c45dd29221f524d1227c207a (patch) | |
| tree | 1178c0aa560960ee8ed6b7b2931288f24c775624 /src/invalid/invalid_thread.c | |
| parent | ed7e99ebc7c50523e5a2c6f21c8f89028348da71 (diff) | |
| download | ecgen-dedb8c3f127a3198c45dd29221f524d1227c207a.tar.gz ecgen-dedb8c3f127a3198c45dd29221f524d1227c207a.tar.zst ecgen-dedb8c3f127a3198c45dd29221f524d1227c207a.zip | |
Diffstat (limited to 'src/invalid/invalid_thread.c')
| -rw-r--r-- | src/invalid/invalid_thread.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/invalid/invalid_thread.c b/src/invalid/invalid_thread.c index c9e8108..cf0f67c 100644 --- a/src/invalid/invalid_thread.c +++ b/src/invalid/invalid_thread.c @@ -5,6 +5,8 @@ #include "invalid_thread.h" #include "gen/curve.h" +#include "gen/gens.h" +#include "gen/point.h" #include "util/random.h" #include "util/timeout.h" @@ -27,6 +29,7 @@ void *invalid_thread(void *arg) { pari_sp btop = avma; exhaustive_gen(invalid, thread->setup, OFFSET_B, OFFSET_GENERATORS); size_t ndivides = 0; + size_t nfree = 0; for (size_t i = thread->nprimes; i-- > 0;) { if (dvdis(invalid->order, thread->primes[i])) { // whoo we have a new invalid curve @@ -38,8 +41,6 @@ void *invalid_thread(void *arg) { exhaustive_gen_retry(invalid, &invalid_setup, OFFSET_GENERATORS, OFFSET_POINTS, 1)) { pthread_mutex_lock(thread->mutex_state); - size_t nfree = 0; - // can be up to ndivides, but also lower... pari_ulong primes[ndivides]; size_t nprimes = 0; for (size_t i = thread->nprimes; i-- > 0;) { @@ -70,17 +71,13 @@ void *invalid_thread(void *arg) { *(thread->generated) += count; pthread_cond_signal(thread->cond_generated); pthread_mutex_unlock(thread->mutex_state); - - invalid = curve_new(); - invalid->field = gcopy(thread->original_curve->field); - invalid->a = gcopy(thread->original_curve->a); - continue; } } - // We were unsuccessful for some reason, unroll + points_unroll(invalid, avma, btop); + gens_unroll(invalid, avma, btop); curve_unroll(invalid, avma, btop); - avma = btop; + if (nfree == 0) avma = btop; } curve_free(&invalid); |
