void program() { GlobalManager CoCoAFoundations; SparsePolyRing P = NewPolyRing(RingQQ(), 2); // QQ[x,y]; const RingElem& x = indet(P,0); const RingElem& y = indet(P,1); RingElem f = power(x,96) - power(y,96); // f = x^96-y^96 const factorization<RingElem> FacInfo = factor(f); // These are convenient aliases for the 3 fields in the factorization: const RingElem& content = FacInfo.myRemainingFactor(); const vector<RingElem>& IrredFacs = FacInfo.myFactors(); const vector<long>& mult = FacInfo.myMultiplicities(); cout << "The factors of " << f << " are:" << endl; if (!IsOne(content)) cout << "content: " << content << endl; const int NumIrredFacs = len(IrredFacs); for (int i = 0; i != NumIrredFacs; ++i) { cout << IrredFacs[i] << " with multiplicity " << mult[i] << endl; } }
ourFactorization::ourFactorization(const factorization<RingElem>& FF){ ourFactorization(FF.myFactors(),FF.myMultiplicities(),FF.myRemainingFactor()); }