Class CongruenceCollector03

java.lang.Object
de.tilman_neumann.jml.factor.base.congruence.CongruenceCollector03
All Implemented Interfaces:
CongruenceCollector

public class CongruenceCollector03
extends java.lang.Object
implements CongruenceCollector
First congruence collector using a cycle counter for 3LP. With 3LP, the cycle count from the cycle counting algorithm is an upper bound of the true number of cycles. So if it indicates that we might have found a new cycle, then the partial solver must be run to check that and resolve the smooth congruence. With 3-partials and large enough N, some partials may have hundreds of thousands of "related partials". Collecting them all would be such a heavy load for findRelatedPartials() and for the partial solver that factoring progress would eventually nearly come to a stop. To prevent that, we had to insert a "cutoff" where findRelatedPartials() stops looking for more related partials; furthermore this seems to produce a lot of duplicate smooth relations... Thus we had to make smoothCongruences a Set instead of a List. But now it works!
  • Field Details

    • factor

      public java.math.BigInteger factor
  • Constructor Details

    • CongruenceCollector03

      public CongruenceCollector03()
      Default constructor that expects 10 more equations than variables to run the matrix solver.
    • CongruenceCollector03

      public CongruenceCollector03​(int extraCongruences)
      Full constructor.
      Parameters:
      extraCongruences - The difference #equations-#variables required before the solver is started.
  • Method Details