nb_examples := 0: examples := table(): gbdacr_ex := proc() global nb_examples, examples; local ex := Record(_passed); if not type(ex, record(:-descr, :-radix, :-fns, :-gens, :-stairs)) then error("missing field") fi; nb_examples := nb_examples + 1; examples[nb_examples] := ex; return ex end: read("data.mpl"): read("gbdacr.mpl"): for idx to nb_examples do ex := examples[idx]; printf("# Example %d, %s\n", idx, ex:-descr); mm := make_gbdacr_context(ex:-radix, x, Tw, Tr, TwFn, TrFn, `if`(ex:-fns = none, [_f], ex:-fns)); ti1 := time(assign('gb1' = mm:-buchberger(ex:-gens))); ti2 := time(assign('gb2' = mm:-f4(ex:-gens))); lms := mm:-leadmon~(gb1); if convert(normal(gb1 - gb2), set) <> {0} or lms <> ex:-stairs then error("bug") fi; printf("# Input generating set:\n"); lprint(ex:-gens); printf("# Output Gröbner basis:\n"); lprint(gb1); printf("# Leading monomials:\n"); lprint(lms); printf("# Time by Buchberger, Time by F4, Speedup by F4:\n"); printf("%.2f, %.2f, %.2f\n", ti1, ti2, ti1/ti2); printf("\n") od: