gnu99 to c99 (not compiler dependent) produces a warning for mkstemp
[anf2cnf:anf2cnf.git] / generate_anf.m
1 procedure dump(F)
2     for f in F do
3         for m in Monomials(f) do
4             for vd in Factorization(m) do
5                 v := Support(vd[1])[1];
6                 d := vd[2];
7                 for i := 1 to d do
8                     printf "%o,", v;
9                 end for;
10             end for;
11             printf "|";
12         end for;
13         printf "\n";
14     end for;
15 end procedure;
16
17 function randF(R,d,w)
18     f := Zero(R);
19     mons := &join [MonomialsOfDegree(R,i) : i in [0..d]];
20     for m in mons do
21         r := Random(99);
22         if (r lt w) then
23             f +:= m;
24         end if;
25     end for;
26     return f;
27 end function;
28
29 n := assigned n select StringToInteger(n) else 0;
30 m := assigned m select StringToInteger(m) else 0;
31 d := assigned d select StringToInteger(d) else 0;
32 w := assigned w select StringToInteger(w) else 50;
33 error if n le 0, "n should be positive integer";
34
35 R<[x]> := PolynomialRing(GF(2),n);
36 F := [randF(R,d,w) : i in [1..m]];
37
38 dump (F);