1 #include "substitute.h" 2 multiplicativeChange(Polynomial const & p,IntegerMatrix const & mat)3Polynomial multiplicativeChange(Polynomial const &p, IntegerMatrix const &mat) 4 { 5 PolynomialRing theRing=p.getRing(); 6 Polynomial ret(theRing); 7 if(!p.isZero()) 8 { 9 IntegerVector rel=p.terms.begin()->first.exponent; 10 for(TermMap::const_iterator i=p.terms.begin();i!=p.terms.end();i++) 11 ret+=Term(i->second,Monomial(theRing,mat.vectormultiply(i->first.exponent))); 12 } 13 return ret; 14 } 15 16 multiplicativeChange(PolynomialSet const & g,IntegerMatrix const & mat)17PolynomialSet multiplicativeChange(PolynomialSet const &g, IntegerMatrix const &mat) 18 { 19 PolynomialRing theRing=g.getRing(); 20 PolynomialSet ret(theRing); 21 for(PolynomialSet::const_iterator i=g.begin();i!=g.end();i++) 22 ret.push_back(multiplicativeChange(*i,mat)); 23 24 return ret; 25 } 26