+++ /dev/null
-#include <stdio.h>
-#include <assert.h>
-#include "tlib.hh"
-#include "signals.hh"
-#include "sigprint.hh"
-#include "ppsig.hh"
-#include "simplify.hh"
-#include "normalize.hh"
-#include "sigorderrules.hh"
-#include <map>
-#include <list>
-
-#include "mterm.hh"
-#include "aterm.hh"
-
-#if 0
-static void countAddTerm (map<Tree,Tree>& M, Tree t, bool invflag);
-static void incTermCount (map<Tree,int>& M, Tree t, bool invflag);
-static Tree buildPowTerm (Tree f, int q);
-static Tree simplifyingReorganizingMul(Tree t1, Tree t2);
-static Tree reorganizingMul(Tree k, Tree t);
-static void factorizeAddTerm(map<Tree,Tree>& M);
-#endif
-
-#undef TRACE
-
-/**
- * Compute the Add-Normal form of a term t.
- * \param t the term to be normalized
- * \return the normalized term
- */
-Tree normalizeAddTerm(Tree t)
-{
-#ifdef TRACE
- cerr << "START normalizeAddTerm : " << ppsig(t) << endl;
-#endif
-
- aterm A(t);
- //cerr << "ATERM IS : " << A << endl;
- mterm D = A.greatestDivisor();
- while (D.isNotZero() && D.complexity() > 0) {
- //cerr << "GREAT DIV : " << D << endl;
- A = A.factorize(D);
- D = A.greatestDivisor();
- }
- return A.normalizedTree();
-}
-
-
-/**
- * Compute the normal form of a 1-sample delay term s'.
- * The normalisation rules are :
- * 0' -> 0 /// INACTIVATE dec07 bug recursion
- * (k*s)' -> k*s'
- * (s/k)' -> s'/k
- * \param s the term to be delayed by 1 sample
- * \return the normalized term
- */
-Tree normalizeDelay1Term(Tree s)
-{
- return normalizeFixedDelayTerm(s, tree(1));
-}
-
-
-/**
- * Compute the normal form of a fixed delay term (s@d).
- * The normalisation rules are :
- * s@0 -> s
- * 0@d -> 0
- * (k*s)@d -> k*(s@d)
- * (s/k)@d -> (s@d)/k
- * (s@n)@m -> s@(n+m)
- * Note that the same rules can't be applied to
- * + et - becaue the value of the first d samples
- * would be wrong. We could also add delays such that
- * \param s the term to be delayed
- * \param d the value of the delay
- * \return the normalized term
- */
-
-Tree normalizeFixedDelayTerm(Tree s, Tree d)
-{
- Tree x, y, r;
- int i;
-
- if (isZero(d) && ! isProj(s, &i, r)) {
-
- return s;
-
- } else if (isZero(s)) {
-
- return s;
-
- } else if (isSigMul(s, x, y)) {
-
- if (getSigOrder(x) < 2) {
- return /*simplify*/(sigMul(x,normalizeFixedDelayTerm(y,d)));
- } else if (getSigOrder(y) < 2) {
- return /*simplify*/(sigMul(y,normalizeFixedDelayTerm(x,d)));
- } else {
- return sigFixDelay(s,d);
- }
-
- } else if (isSigDiv(s, x, y)) {
-
- if (getSigOrder(y) < 2) {
- return /*simplify*/(sigDiv(normalizeFixedDelayTerm(x,d),y));
- } else {
- return sigFixDelay(s,d);
- }
-
- } else if (isSigFixDelay(s, x, y)) {
- // (x@n)@m = x@(n+m)
-// return sigFixDelay(x,tree(tree2int(d)+tree2int(y)));
- return normalizeFixedDelayTerm(x,simplify(sigAdd(d,y)));
-
- } else {
-
- return sigFixDelay(s,d);
- }
-}
-