package jscl.math.polynomial.groebner; import jscl.math.Generic; import jscl.math.polynomial.Basis; import jscl.math.polynomial.Polynomial; import java.util.ArrayList; import java.util.List; class Instrumented extends Standard { final List aux = new ArrayList(); Instrumented(int flags) { super(flags); } void populate(Basis basis) { Basis aux = basis.modulo(2147483647); Generic a[] = basis.elements(); for (int i = 0; i < a.length; i++) { Polynomial p = basis.polynomial(a[i]); Polynomial x = aux.polynomial(a[i]); if (x.signum() != 0 && p.signum() != 0) add(p, x); } } void process(Pair pair) { if (criterion(pair)) return; Polynomial x = reduce(new Pair(new Polynomial[]{auxiliary(pair.polynomial[0]), auxiliary(pair.polynomial[1])}), aux); if (x.signum() != 0) { Polynomial p = reduce(pair, polys); if (p.signum() != 0) add(p, x); } npairs++; } void add(Polynomial polynomial, Polynomial auxiliary) { add(polynomial); aux.add(auxiliary); } Polynomial auxiliary(Polynomial polynomial) { return (Polynomial) aux.get(polynomial.index()); } }