diff options
Diffstat (limited to 'moon-abe/pbc-0.5.14/gen/listmnt.c')
-rw-r--r-- | moon-abe/pbc-0.5.14/gen/listmnt.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/moon-abe/pbc-0.5.14/gen/listmnt.c b/moon-abe/pbc-0.5.14/gen/listmnt.c new file mode 100644 index 00000000..a9160eab --- /dev/null +++ b/moon-abe/pbc-0.5.14/gen/listmnt.c @@ -0,0 +1,41 @@ +// For different discriminants D, list group size and representation size +// of resulting MNT curves. + +#include "pbc.h" + +int consider(pbc_cm_t cm, void *data) { + unsigned int D = * (unsigned *) data; + int qbits, rbits; + qbits = mpz_sizeinbase(cm->q, 2); + rbits = mpz_sizeinbase(cm->r, 2); + printf("%d, %d, %d\n", D, qbits, rbits); + fflush(stdout); + return 0; +} + +void try(unsigned int D) { + pbc_cm_search_d(consider, &D, D, 500); +} + +int main(int argc, char **argv) +{ + unsigned int D = 7; + + if (argc > 1) { + D = atoi(argv[1]); + if (D < 7 || (D % 4) != 3) { + pbc_die("D must be 3 mod 4 and at least 7"); + } + } + + const unsigned int maxD = 1000000000; + printf("D < %u, bits in q, bits in r\n", maxD); + while (D < maxD) { + try(D); + D++; + try(D); + D+=3; + } + + return 0; +} |