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@ --- *