public GNFS() { PrimeFactorBase = new FactorBase(); PolynomialCollection = new List <IPolynomial>(); RationalFactorPairCollection = new FactorPairCollection(); AlgebraicFactorPairCollection = new FactorPairCollection(); QuadraticFactorPairCollection = new FactorPairCollection(); CurrentRelationsProgress = new PolyRelationsSieveProgress(); }
public GaussianRow(GNFS gnfs, Relation relation) { SourceRelation = relation; if (relation.RationalNorm.Sign == -1) { Sign = true; } else { Sign = false; } FactorPairCollection qfb = gnfs.QuadraticFactorPairCollection; BigInteger rationalMaxValue = gnfs.PrimeFactorBase.RationalFactorBaseMax; BigInteger algebraicMaxValue = gnfs.PrimeFactorBase.AlgebraicFactorBaseMax; RationalPart = GetVector(relation.RationalFactorization, rationalMaxValue).ToList(); AlgebraicPart = GetVector(relation.AlgebraicFactorization, algebraicMaxValue).ToList(); QuadraticPart = qfb.Select(qf => QuadraticResidue.GetQuadraticCharacter(relation, qf)).ToList(); }