X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/1059e1cc0c2ecfa237406949aa26155b6a5b9154..66f23d4fabf89ad09adbd4dfc15ac6b5b2b7da83:/interpretor/preprocessor/faust-0.9.47mr3/compiler/normalize/normalize.cpp diff --git a/interpretor/preprocessor/faust-0.9.47mr3/compiler/normalize/normalize.cpp b/interpretor/preprocessor/faust-0.9.47mr3/compiler/normalize/normalize.cpp deleted file mode 100644 index 44e8f45..0000000 --- a/interpretor/preprocessor/faust-0.9.47mr3/compiler/normalize/normalize.cpp +++ /dev/null @@ -1,122 +0,0 @@ -#include -#include -#include "tlib.hh" -#include "signals.hh" -#include "sigprint.hh" -#include "ppsig.hh" -#include "simplify.hh" -#include "normalize.hh" -#include "sigorderrules.hh" -#include -#include - -#include "mterm.hh" -#include "aterm.hh" - -#if 0 -static void countAddTerm (map& M, Tree t, bool invflag); -static void incTermCount (map& 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& 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); - } -} -