File: substitute.cpp

package info (click to toggle)
gfan 0.3dfsg-1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 2,012 kB
  • ctags: 1,935
  • sloc: cpp: 17,728; makefile: 251
file content (25 lines) | stat: -rw-r--r-- 714 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "substitute.h"

Polynomial multiplicativeChange(Polynomial const &p, IntegerMatrix const &mat)
{
  PolynomialRing theRing=p.getRing();
  Polynomial ret(theRing);
  if(!p.isZero())
    {
      IntegerVector rel=p.terms.begin()->first.exponent;
      for(TermMap::const_iterator i=p.terms.begin();i!=p.terms.end();i++)
	ret+=Term(i->second,Monomial(theRing,mat.vectormultiply(i->first.exponent)));
    }
  return ret;
}


PolynomialSet multiplicativeChange(PolynomialSet const &g, IntegerMatrix const &mat)
{
  PolynomialRing theRing=g.getRing();
  PolynomialSet ret(theRing);
  for(PolynomialSet::const_iterator i=g.begin();i!=g.end();i++)
    ret.push_back(multiplicativeChange(*i,mat));

  return ret;
}