diff options
| author | J08nY | 2017-09-29 19:45:41 +0200 |
|---|---|---|
| committer | J08nY | 2017-09-29 19:45:41 +0200 |
| commit | 67c88571068fe34ebf21d53ed9d872332450eb48 (patch) | |
| tree | 7992939df70b58c30dda82e299dc4b910ae7d84e /src/invalid | |
| parent | 33e634568f368ebf108caa16e4adb2fabece565b (diff) | |
| download | ecgen-67c88571068fe34ebf21d53ed9d872332450eb48.tar.gz ecgen-67c88571068fe34ebf21d53ed9d872332450eb48.tar.zst ecgen-67c88571068fe34ebf21d53ed9d872332450eb48.zip | |
Implement the curve non-zero discriminant as a check_f.
Diffstat (limited to 'src/invalid')
| -rw-r--r-- | src/invalid/invalid.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/invalid/invalid.c b/src/invalid/invalid.c index 34d7667..c3abbc7 100644 --- a/src/invalid/invalid.c +++ b/src/invalid/invalid.c @@ -3,7 +3,7 @@ * Copyright (C) 2017 J08nY */ #include "invalid.h" -#include <exhaustive/exhaustive.h> +#include "exhaustive/check.h" #include "exhaustive/exhaustive.h" #include "gen/curve.h" #include "gen/equation.h" @@ -27,7 +27,7 @@ static void invalid_original_ginit(gen_f *generators, const config_t *cfg) { generators[OFFSET_B] = &b_gen_input; } generators[OFFSET_GENERATORS] = &gens_gen_any; - generators[OFFSET_CURVE] = &curve_gen_nonzero; + generators[OFFSET_CURVE] = &curve_gen_any; generators[OFFSET_ORDER] = &order_gen_any; } @@ -36,7 +36,7 @@ static void invalid_invalid_ginit(gen_f *generators, const config_t *cfg) { generators[OFFSET_FIELD] = &gen_skip; generators[OFFSET_A] = &gen_skip; generators[OFFSET_B] = &b_gen_random; - generators[OFFSET_CURVE] = &curve_gen_nonzero; + generators[OFFSET_CURVE] = &curve_gen_any; generators[OFFSET_ORDER] = &order_gen_any; if (cfg->unique) { generators[OFFSET_GENERATORS] = &gens_gen_one; @@ -46,6 +46,11 @@ static void invalid_invalid_ginit(gen_f *generators, const config_t *cfg) { generators[OFFSET_POINTS] = &points_gen_trial; } +static void invalid_cinit(check_t **validators, const config_t *cfg) { + check_t *curve_check = check_new(curve_check_nonzero, NULL); + validators[OFFSET_CURVE] = curve_check; +} + static size_t invalid_primes(GEN order, pari_ulong **primes) { pari_sp ltop = avma; @@ -277,13 +282,15 @@ static size_t invalid_curves_threaded(const curve_t *curve, const config_t *cfg, int invalid_do(config_t *cfg) { debug_log_start("Starting Invalid curve method"); - gen_f original_gens[OFFSET_END]; - arg_t *original_argss[OFFSET_END]; - unroll_f common_unrolls[OFFSET_END]; + gen_f original_gens[OFFSET_END] = {NULL}; + check_t *common_validators[OFFSET_END] = {NULL}; + arg_t *original_argss[OFFSET_END] = {NULL}; + unroll_f common_unrolls[OFFSET_END] = {NULL}; invalid_original_ginit(original_gens, cfg); + invalid_cinit(common_validators, cfg); exhaustive_uinit(common_unrolls, cfg); exhaustive_t original_setup = {.generators = original_gens, - .validators = NULL, + .validators = common_validators, .argss = original_argss, .unrolls = common_unrolls}; @@ -313,7 +320,7 @@ int invalid_do(config_t *cfg) { gen_f invalid_gens[OFFSET_END]; invalid_invalid_ginit(invalid_gens, cfg); exhaustive_t invalid_setup = {.generators = invalid_gens, - .validators = NULL, + .validators = common_validators, .argss = NULL, .unrolls = common_unrolls}; |
