mpint.c (touint): Compare unsigned with unsigned, not unsigned long.
[u/mdw/catacomb] / pcheck.pl
CommitLineData
34e4f738 1#! /usr/bin/perl
2
3# Reads ptab.in or similarly-formatted file; writes a calc script to check
4# it.
5
6while (<>) {
7 next if /^\s*(\#[^!]|$)/;
8 @F = split;
9 if ($F[0] eq "group") {
10 $group = $F[1];
11 $_ = <>; @F = split; $F[0] eq "p" or die $F[0]; $p = $F[1];
12 $_ = <>; @F = split; $F[0] eq "q" or die $F[0]; $q = $F[1];
13 $_ = <>; @F = split; $F[0] eq "g" or die $F[0]; $g = $F[1];
14 print <<EOF;
15 print "testing $group...";
16 p = $p;
17 q = $q;
18 g = $g;
19 if (!ptest(p)) print " p not prime";
20 if (!ptest(q)) print " q not prime";
21 if ((p - 1)%q) print " q doesn't divide p - 1";
22 h = (p - 1)/q;
23 if (pmod(g, q, p) != 1) print " g doesn't have order q";
24 if (pmod(g, h, p) == 1) print " g generates overly large group";
25 ff = 2;
26EOF
27 $ll = 0;
28 for (;;) {
29 $_ = <>; @F = split; $F[0] eq "#:factor" or last; $f = $F[1];
30 print <<EOF;
45c0fd36
MW
31 f = $f;
32 if (!ptest(f)) print " factor not prime", f;
33 ff *= f;
34e4f738 34EOF
35 $ll = 1;
36 }
37 if ($ll) {
38 print <<EOF;
45c0fd36 39 if (ff != p - 1) print " missing factors";
34e4f738 40EOF
41 }
42 }
43}