X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/1222a44ad62e577af2f1af6f7aee831e89793965..a889a2b3fd8065bc610a0db330b1b63820e4d3c9:/math/pgen.c diff --git a/math/pgen.c b/math/pgen.c index f90a3c78..b7163b90 100644 --- a/math/pgen.c +++ b/math/pgen.c @@ -140,6 +140,47 @@ int pgen_test(int rq, pgen_event *ev, void *p) return (rc); } +/* --- @pgen_bailliepswtest@ --- */ + +int pgen_bailliepswtest(int rq, pgen_event *ev, void *p) +{ + rabin r; + int rc; + + switch (rq) { + case PGEN_BEGIN: + if (ev->tests != 2) rc = PGEN_ABORT; + else rc = PGEN_TRY; + break; + + case PGEN_DONE: + rc = PGEN_DONE; + break; + + case PGEN_TRY: + switch (ev->tests) { + case 2: + rabin_create(&r, ev->m); + rc = rabin_test(&r, MP_TWO); + rabin_destroy(&r); + break; + case 1: + rc = pgen_granfrob(ev->m, 0, 0); + break; + default: + rc = PGEN_ABORT; + break; + } + break; + + default: + rc = PGEN_ABORT; + break; + } + + return (rc); +} + /*----- The main driver ---------------------------------------------------*/ /* --- @pgen@ --- *