1 #include "substitute.h"
2 
multiplicativeChange(Polynomial const & p,IntegerMatrix const & mat)3 Polynomial 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)17 PolynomialSet 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