FAUST compiler  0.9.9.6b8
Public Member Functions | Private Attributes | Friends | List of all members
mterm Class Reference

Implements a multiplicative term, a term of type k*x^n*y^m*... More...

#include <mterm.hh>

Collaboration diagram for mterm:
Collaboration graph
[legend]

Public Member Functions

 mterm ()
 create a 0 mterm More...
 
 mterm (int k)
 create a simple integer mterm More...
 
 mterm (double k)
 create a simple float mterm More...
 
 mterm (Tree t)
 create a mterm from a multiplicative exp More...
 
 mterm (const mterm &m)
 create a copy of a mterm More...
 
void cleanup ()
 remove usued factors More...
 
bool isNotZero () const
 true if mterm doesn't represent number 0 More...
 
bool isNegative () const
 true if mterm has a negative coefficient More...
 
const mtermoperator= (const mterm &m)
 replace the content with a copy of m More...
 
const mtermoperator*= (Tree m)
 multiply in place by a multiplicative exp More...
 
const mtermoperator/= (Tree m)
 divide in place by a multiplicative exp More...
 
const mtermoperator+= (const mterm &m)
 add in place an mterm of same signature More...
 
const mtermoperator-= (const mterm &m)
 add in place an mterm of same signature More...
 
const mtermoperator*= (const mterm &m)
 multiply in place by a mterm More...
 
const mtermoperator/= (const mterm &m)
 divide in place by a mterm More...
 
mterm operator* (const mterm &m) const
 mterms multiplication More...
 
mterm operator/ (const mterm &m) const
 mterms division More...
 
ostream & print (ostream &dst) const
 print a mterm k*x1**n1*x2**n2... More...
 
int complexity () const
 return an evaluation of the complexity More...
 
Tree normalizedTree (bool sign=false, bool neg=false) const
 return the normalized tree of the mterm More...
 
Tree signatureTree () const
 return a signature (a normalized tree) More...
 
bool hasDivisor (const mterm &n) const
 return true if this can be divided by n More...
 

Private Attributes

Tree fCoef
 constant part of the term (usually 1 or -1) More...
 
map< Tree, int > fFactors
 non constant terms and their power More...
 

Friends

mterm gcd (const mterm &m1, const mterm &m2)
 return a mterm that is the greatest common divisor of two mterms More...
 

Detailed Description

Implements a multiplicative term, a term of type k*x^n*y^m*...

and its arithmetic

Definition at line 21 of file mterm.hh.

Constructor & Destructor Documentation

mterm::mterm ( )

create a 0 mterm

Definition at line 14 of file mterm.cpp.

14 : fCoef(sigInt(0)) {}
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
Tree sigInt(int i)
Signals.
Definition: signals.cpp:40
mterm::mterm ( int  k)

create a simple integer mterm

Definition at line 15 of file mterm.cpp.

15 : fCoef(sigInt(k)) {}
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
Tree sigInt(int i)
Signals.
Definition: signals.cpp:40
mterm::mterm ( double  k)

create a simple float mterm

Definition at line 16 of file mterm.cpp.

16 : fCoef(sigReal(k)) {} // cerr << "DOUBLE " << endl; }
Tree sigReal(double r)
Definition: signals.cpp:43
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
mterm::mterm ( Tree  t)

create a mterm from a multiplicative exp

create a mterm from a tree sexpression

Definition at line 22 of file mterm.cpp.

22  : fCoef(sigInt(1))
23 {
24  //cerr << "mterm::mterm (Tree t) : " << ppsig(t) << endl;
25  *this *= t;
26  //cerr << "MTERM(" << ppsig(t) << ") -> " << *this << endl;
27 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
Tree sigInt(int i)
Signals.
Definition: signals.cpp:40
mterm::mterm ( const mterm m)

create a copy of a mterm

Definition at line 17 of file mterm.cpp.

17 : fCoef(m.fCoef), fFactors(m.fFactors) {}
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25

Member Function Documentation

void mterm::cleanup ( )

remove usued factors

Clean a mterm by removing x**0 factors.

Definition at line 177 of file mterm.cpp.

References fCoef, fFactors, and isZero().

Referenced by operator*=(), operator+=(), operator-=(), and operator/=().

178 {
179  if (isZero(fCoef)) {
180  fFactors.clear();
181  } else {
182  for (MP::iterator p = fFactors.begin(); p != fFactors.end(); ) {
183  if (p->second == 0) {
184  fFactors.erase(p++);
185  } else {
186  p++;
187  }
188  }
189  }
190 }
bool isZero(Tree a)
Definition: signals.hh:188
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25

Here is the call graph for this function:

Here is the caller graph for this function:

int mterm::complexity ( ) const

return an evaluation of the complexity

Compute the "complexity" of a mterm, that is the number of factors it contains (weighted by the importance of these factors)

Definition at line 65 of file mterm.cpp.

References abs(), fCoef, fFactors, getSigOrder(), and isOne().

Referenced by aterm::greatestDivisor(), and normalizeAddTerm().

66 {
67  int c = isOne(fCoef) ? 0 : 1;
68  for (MP::const_iterator p = fFactors.begin(); p != fFactors.end(); ++p) {
69  c += (1+getSigOrder(p->first))*abs(p->second);
70  }
71  return c;
72 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
interval abs(const interval &x)
Definition: interval.hh:226
bool isOne(Tree a)
Definition: signals.hh:191
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
int getSigOrder(Tree sig)
retrieve the order annotation (between 0 and 3) of a signal.

Here is the call graph for this function:

Here is the caller graph for this function:

bool mterm::hasDivisor ( const mterm n) const

return true if this can be divided by n

Check if M accept N has a divisor.

We can say that N is a divisor of M if M = N*Q and the complexity is preserved : complexity(M) = complexity(N)+complexity(Q) x**u has divisor x**v if u >= v x**-u has divisor x**-v if -u <= -v

Definition at line 337 of file mterm.cpp.

References contains(), and fFactors.

Referenced by aterm::factorize().

338 {
339  for (MP::const_iterator p1 = n.fFactors.begin(); p1 != n.fFactors.end(); p1++) {
340  // for each factor f**q of m
341  Tree f = p1->first;
342  int v = p1->second;
343 
344  // check that f is also a factor of *this
345  MP::const_iterator p2 = fFactors.find(f);
346  if (p2 == fFactors.end()) return false;
347 
348  // analyze quantities
349  int u = p2->second;
350  if (! contains(u,v) ) return false;
351  }
352  return true;
353 }
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
static bool contains(int a, int b)
We say that a "contains" b if a/b > 0.
Definition: mterm.cpp:325

Here is the call graph for this function:

Here is the caller graph for this function:

bool mterm::isNegative ( ) const

true if mterm has a negative coefficient

true if mterm doesn't represent number 0

Definition at line 40 of file mterm.cpp.

References fCoef, and isGEZero().

Referenced by aterm::normalizedTree().

41 {
42  return !isGEZero(fCoef);
43 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
bool isGEZero(Tree a)
Definition: signals.hh:190

Here is the call graph for this function:

Here is the caller graph for this function:

bool mterm::isNotZero ( ) const

true if mterm doesn't represent number 0

Definition at line 32 of file mterm.cpp.

References fCoef, and isZero().

Referenced by normalizeAddTerm().

33 {
34  return !isZero(fCoef);
35 }
bool isZero(Tree a)
Definition: signals.hh:188
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24

Here is the call graph for this function:

Here is the caller graph for this function:

Tree mterm::normalizedTree ( bool  sign = false,
bool  neg = false 
) const

return the normalized tree of the mterm

returns a normalized (canonical) tree expression of structure : ((k*(v1/v2))*(c1/c2))*(s1/s2) In signature mode the fCoef factor is ommited In negativeMode the sign of the fCoef factor is inverted

Definition at line 427 of file mterm.cpp.

References combineDivLeft(), combineMulDiv(), combineMulLeft(), fCoef, fFactors, getSigOrder(), isMinusOne(), isOne(), isZero(), minusNum(), sigDiv(), and tree().

Referenced by aterm::factorize(), aterm::normalizedTree(), and signatureTree().

428 {
429  if (fFactors.empty() || isZero(fCoef)) {
430  // it's a pure number
431  if (signatureMode) return tree(1);
432  if (negativeMode) return minusNum(fCoef);
433  else return fCoef;
434  } else {
435  // it's not a pure number, it has factors
436  Tree A[4], B[4];
437 
438  // group by order
439  for (int order = 0; order < 4; order++) {
440  A[order] = 0; B[order] = 0;
441  for (MP::const_iterator p = fFactors.begin(); p != fFactors.end(); p++) {
442  Tree f = p->first; // f = factor
443  int q = p->second; // q = power of f
444  if (f && q && getSigOrder(f)==order) {
445 
446  combineMulDiv (A[order], B[order], f, q);
447  }
448  }
449  }
450  if (A[0] != 0) cerr << "A[0] == " << *A[0] << endl;
451  if (B[0] != 0) cerr << "B[0] == " << *B[0] << endl;
452  // en principe ici l'order zero est vide car il correspond au coef numerique
453  assert(A[0] == 0);
454  assert(B[0] == 0);
455 
456  // we only use a coeficient if it differes from 1 and if we are not in signature mode
457  if (! (signatureMode | isOne(fCoef))) {
458  A[0] = (negativeMode) ? minusNum(fCoef) : fCoef;
459  }
460 
461  if (signatureMode) {
462  A[0] = 0;
463  } else if (negativeMode) {
464  if (isMinusOne(fCoef)) { A[0] = 0; } else { A[0] = minusNum(fCoef); }
465  } else if (isOne(fCoef)) {
466  A[0] = 0;
467  } else {
468  A[0] = fCoef;
469  }
470 
471  // combine each order separately : R[i] = A[i]/B[i]
472  Tree RR = 0;
473  for (int order = 0; order < 4; order++) {
474  if (A[order] && B[order]) combineMulLeft(RR,sigDiv(A[order],B[order]));
475  else if (A[order]) combineMulLeft(RR,A[order]);
476  else if (B[order]) combineDivLeft(RR,B[order]);
477  }
478  if (RR == 0) RR = tree(1); // a verifier *******************
479 
480  assert(RR);
481  //cerr << "Normalized Tree of " << *this << " is " << ppsig(RR) << endl;
482  return RR;
483  }
484 }
bool isZero(Tree a)
Definition: signals.hh:188
Tree minusNum(Tree a)
Definition: signals.cpp:330
static void combineMulLeft(Tree &R, Tree A)
Combine R and A doing R = R*A or R = A.
Definition: mterm.cpp:376
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
static void combineDivLeft(Tree &R, Tree A)
Combine R and A doing R = R*A or R = A.
Definition: mterm.cpp:386
bool isOne(Tree a)
Definition: signals.hh:191
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
bool isMinusOne(Tree a)
Definition: signals.hh:192
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
static void combineMulDiv(Tree &M, Tree &D, Tree f, int q)
Do M = M * f**q or D = D * f**-q.
Definition: mterm.cpp:396
int getSigOrder(Tree sig)
retrieve the order annotation (between 0 and 3) of a signal.
Tree tree(const Node &n)
Definition: tree.hh:186
Tree sigDiv(Tree x, Tree y)
Definition: signals.hh:155

Here is the call graph for this function:

Here is the caller graph for this function:

mterm mterm::operator* ( const mterm m) const

mterms multiplication

Multiply two mterms.

Definition at line 264 of file mterm.cpp.

265 {
266  mterm r(*this);
267  r *= m;
268  return r;
269 }
Implements a multiplicative term, a term of type k*x^n*y^m*...
Definition: mterm.hh:21
const mterm & mterm::operator*= ( Tree  t)

multiply in place by a multiplicative exp

Multiple a mterm by an expression tree t.

Go down recursively looking for multiplications and divisions

Definition at line 103 of file mterm.cpp.

References fCoef, fFactors, isNum(), isSigBinOp(), isSigPow(), kDiv, kMul, and mulNums().

104 {
105  int op, n;
106  Tree x,y;
107 
108  assert(t!=0);
109 
110  if (isNum(t)) {
111  fCoef = mulNums(fCoef,t);
112 
113  } else if (isSigBinOp(t, &op, x, y) && (op == kMul)) {
114  *this *= x;
115  *this *= y;
116 
117  } else if (isSigBinOp(t, &op, x, y) && (op == kDiv)) {
118  *this *= x;
119  *this /= y;
120 
121  } else {
122  if (isSigPow(t,x,n)) {
123  fFactors[x] += n;
124  } else {
125  fFactors[t] += 1;
126  }
127  }
128  return *this;
129 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
bool isNum(Tree a)
Definition: signals.hh:187
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
Definition: binop.hh:56
Definition: binop.hh:56
Tree mulNums(Tree a, Tree b)
Definition: signals.cpp:309
static bool isSigPow(Tree sig, Tree &x, int &n)
match x^p with p:int
Definition: mterm.cpp:77
bool isSigBinOp(Tree s, int *op, Tree &x, Tree &y)
Definition: signals.cpp:126

Here is the call graph for this function:

const mterm & mterm::operator*= ( const mterm m)

multiply in place by a mterm

Multiply a mterm by the content of another mterm.

Definition at line 237 of file mterm.cpp.

References cleanup(), fCoef, fFactors, and mulNums().

238 {
239  fCoef = mulNums(fCoef,m.fCoef);
240  for (MP::const_iterator p = m.fFactors.begin(); p != m.fFactors.end(); p++) {
241  fFactors[p->first] += p->second;
242  }
243  cleanup();
244  return *this;
245 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
void cleanup()
remove usued factors
Definition: mterm.cpp:177
Tree mulNums(Tree a, Tree b)
Definition: signals.cpp:309

Here is the call graph for this function:

const mterm & mterm::operator+= ( const mterm m)

add in place an mterm of same signature

Add in place an mterm.

As we want the result to be a mterm therefore essentially mterms of same signature can be added

Definition at line 196 of file mterm.cpp.

References addNums(), cleanup(), fCoef, fFactors, isZero(), and signatureTree().

197 {
198  if (isZero(m.fCoef)) {
199  // nothing to do
200  } else if (isZero(fCoef)) {
201  // copy of m
202  fCoef = m.fCoef;
203  fFactors = m.fFactors;
204  } else {
205  // only add mterms of same signature
206  assert(signatureTree() == m.signatureTree());
207  fCoef = addNums(fCoef, m.fCoef);
208  }
209  cleanup();
210  return *this;
211 }
bool isZero(Tree a)
Definition: signals.hh:188
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
Tree signatureTree() const
return a signature (a normalized tree)
Definition: mterm.cpp:416
Tree addNums(Tree a, Tree b)
Definition: signals.cpp:295
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
void cleanup()
remove usued factors
Definition: mterm.cpp:177

Here is the call graph for this function:

const mterm & mterm::operator-= ( const mterm m)

add in place an mterm of same signature

Substract in place an mterm.

As we want the result to be a mterm therefore essentially mterms of same signature can be substracted

Definition at line 217 of file mterm.cpp.

References cleanup(), fCoef, fFactors, isZero(), minusNum(), signatureTree(), and subNums().

218 {
219  if (isZero(m.fCoef)) {
220  // nothing to do
221  } else if (isZero(fCoef)) {
222  // minus of m
223  fCoef = minusNum(m.fCoef);
224  fFactors = m.fFactors;
225  } else {
226  // only add mterms of same signature
227  assert(signatureTree() == m.signatureTree());
228  fCoef = subNums(fCoef, m.fCoef);
229  }
230  cleanup();
231  return *this;
232 }
bool isZero(Tree a)
Definition: signals.hh:188
Tree minusNum(Tree a)
Definition: signals.cpp:330
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
Tree signatureTree() const
return a signature (a normalized tree)
Definition: mterm.cpp:416
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
void cleanup()
remove usued factors
Definition: mterm.cpp:177
Tree subNums(Tree a, Tree b)
Definition: signals.cpp:302

Here is the call graph for this function:

mterm mterm::operator/ ( const mterm m) const

mterms division

Divide two mterms.

Definition at line 274 of file mterm.cpp.

275 {
276  mterm r(*this);
277  r /= m;
278  return r;
279 }
Implements a multiplicative term, a term of type k*x^n*y^m*...
Definition: mterm.hh:21
const mterm & mterm::operator/= ( Tree  t)

divide in place by a multiplicative exp

Divide a mterm by an expression tree t.

Go down recursively looking for multiplications and divisions

Definition at line 135 of file mterm.cpp.

References divExtendedNums(), fCoef, fFactors, isNum(), isSigBinOp(), isSigPow(), kDiv, and kMul.

136 {
137  //cerr << "division en place : " << *this << " / " << ppsig(t) << endl;
138  int op,n;
139  Tree x,y;
140 
141  assert(t!=0);
142 
143  if (isNum(t)) {
145 
146  } else if (isSigBinOp(t, &op, x, y) && (op == kMul)) {
147  *this /= x;
148  *this /= y;
149 
150  } else if (isSigBinOp(t, &op, x, y) && (op == kDiv)) {
151  *this /= x;
152  *this *= y;
153 
154  } else {
155  if (isSigPow(t,x,n)) {
156  fFactors[x] -= n;
157  } else {
158  fFactors[t] -= 1;
159  }
160  }
161  return *this;
162 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
bool isNum(Tree a)
Definition: signals.hh:187
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
Definition: binop.hh:56
Definition: binop.hh:56
static bool isSigPow(Tree sig, Tree &x, int &n)
match x^p with p:int
Definition: mterm.cpp:77
bool isSigBinOp(Tree s, int *op, Tree &x, Tree &y)
Definition: signals.cpp:126
Tree divExtendedNums(Tree a, Tree b)
Definition: signals.cpp:323

Here is the call graph for this function:

const mterm & mterm::operator/= ( const mterm m)

divide in place by a mterm

Divide a mterm by the content of another mterm.

Definition at line 250 of file mterm.cpp.

References cleanup(), divExtendedNums(), fCoef, and fFactors.

251 {
252  //cerr << "division en place : " << *this << " / " << m << endl;
254  for (MP::const_iterator p = m.fFactors.begin(); p != m.fFactors.end(); p++) {
255  fFactors[p->first] -= p->second;
256  }
257  cleanup();
258  return *this;
259 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
void cleanup()
remove usued factors
Definition: mterm.cpp:177
Tree divExtendedNums(Tree a, Tree b)
Definition: signals.cpp:323

Here is the call graph for this function:

const mterm & mterm::operator= ( const mterm m)

replace the content with a copy of m

Definition at line 167 of file mterm.cpp.

References fCoef, and fFactors.

168 {
169  fCoef = m.fCoef;
170  fFactors = m.fFactors;
171  return *this;
172 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
ostream & mterm::print ( ostream &  dst) const

print a mterm k*x1**n1*x2**n2...

print a mterm in a human readable format

Definition at line 48 of file mterm.cpp.

References fCoef, fFactors, and isOne().

Referenced by operator<<().

49 {
50  const char* sep = "";
51  if (!isOne(fCoef) || fFactors.empty()) { dst << ppsig(fCoef); sep = " * "; }
52  //if (true) { dst << ppsig(fCoef); sep = " * "; }
53  for (MP::const_iterator p = fFactors.begin(); p != fFactors.end(); p++) {
54  dst << sep << ppsig(p->first);
55  if (p->second != 1) dst << "**" << p->second;
56  sep = " * ";
57  }
58  return dst;
59 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
bool isOne(Tree a)
Definition: signals.hh:191
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
Definition: ppsig.hh:48

Here is the call graph for this function:

Here is the caller graph for this function:

Tree mterm::signatureTree ( ) const

return a signature (a normalized tree)

returns a normalized (canonical) tree expression of structure : ((v1/v2)*(c1/c2))*(s1/s2)

Definition at line 416 of file mterm.cpp.

References normalizedTree().

Referenced by aterm::operator+=(), operator+=(), aterm::operator-=(), and operator-=().

417 {
418  return normalizedTree(true);
419 }
Tree normalizedTree(bool sign=false, bool neg=false) const
return the normalized tree of the mterm
Definition: mterm.cpp:427

Here is the call graph for this function:

Here is the caller graph for this function:

Friends And Related Function Documentation

mterm gcd ( const mterm m1,
const mterm m2 
)
friend

return a mterm that is the greatest common divisor of two mterms

Definition at line 299 of file mterm.cpp.

300 {
301  //cerr << "GCD of " << m1 << " and " << m2 << endl;
302 
303  Tree c = (m1.fCoef == m2.fCoef) ? m1.fCoef : tree(1); // common coefficient (real gcd not needed)
304  mterm R(c);
305  for (MP::const_iterator p1 = m1.fFactors.begin(); p1 != m1.fFactors.end(); p1++) {
306  Tree t = p1->first;
307  MP::const_iterator p2 = m2.fFactors.find(t);
308  if (p2 != m2.fFactors.end()) {
309  int v1 = p1->second;
310  int v2 = p2->second;
311  int c = common(v1,v2);
312  if (c != 0) {
313  R.fFactors[t] = c;
314  }
315  }
316  }
317  //cerr << "GCD of " << m1 << " and " << m2 << " is : " << R << endl;
318  return R;
319 }
Tree fCoef
constant part of the term (usually 1 or -1)
Definition: mterm.hh:24
static int common(int a, int b)
return the "common quantity" of two numbers
Definition: mterm.cpp:284
A CTree = (Node x [CTree]) is a Node associated with a list of subtrees called branches.
Definition: tree.hh:109
map< Tree, int > fFactors
non constant terms and their power
Definition: mterm.hh:25
Implements a multiplicative term, a term of type k*x^n*y^m*...
Definition: mterm.hh:21
Tree tree(const Node &n)
Definition: tree.hh:186

Member Data Documentation

Tree mterm::fCoef
private

constant part of the term (usually 1 or -1)

Definition at line 24 of file mterm.hh.

Referenced by cleanup(), complexity(), gcd(), isNegative(), isNotZero(), normalizedTree(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), and print().

map<Tree,int> mterm::fFactors
private

non constant terms and their power

Definition at line 25 of file mterm.hh.

Referenced by cleanup(), complexity(), gcd(), hasDivisor(), normalizedTree(), operator*=(), operator+=(), operator-=(), operator/=(), operator=(), and print().


The documentation for this class was generated from the following files: