23 #ifndef COPASI_CNormalTranslation_H__
24 #define COPASI_CNormalTranslation_H__
189 static void splitProduct(
const CEvaluationNode* pRoot, std::vector<const CEvaluationNode*>& multiplications, std::vector<const CEvaluationNode*>& divisions,
bool division);
195 static void splitSum(
const CEvaluationNode* pRoot, std::vector<CEvaluationNode*>& additions, std::vector<CEvaluationNode*>& substractions,
bool minus);
201 static void splitSum(
const CEvaluationNode* pRoot, std::vector<const CEvaluationNode*>& additions, std::vector<const CEvaluationNode*>& substractions,
bool minus);
259 static void swapNegativeNumbers(std::vector<CEvaluationNode*>& v1, std::vector<CEvaluationNode*>& v2);
265 static void findNegativeNumbers(std::vector<const CEvaluationNode*>& v1, std::vector<CEvaluationNode*>& v2);
331 static std::vector<product_match>
matchPowerBases(
const std::vector<const CEvaluationNode*>& multiplications,
const std::vector<const CEvaluationNode*>& divisions);
337 static std::vector<std::pair<CEvaluationNode*, CEvaluationNode*> >
matchSummands(
const std::vector<CEvaluationNode*>& additions,
const std::vector<CEvaluationNode*>& subtractions);
338 static std::vector<summ_match>
matchSummands(
const std::vector<const CEvaluationNode*>& additions,
const std::vector<const CEvaluationNode*>& subtractions);
395 static std::pair<CEvaluationNode*, CEvaluationNode*>
factorize(
const std::vector<CEvaluationNode*>& additions,
const std::vector<CEvaluationNode*>& subtractions);
423 #endif // COPASI_CNormalTranslation_H__
static void splitSum(const CEvaluationNode *pRoot, std::vector< CEvaluationNode * > &additions, std::vector< CEvaluationNode * > &substractions, bool minus)
static const CEvaluationNode NEUTRAL_ELEMENT_AND
static CEvaluationNode * elementaryEliminationModulus(const CEvaluationNode *pModulusNode)
static CNormalFraction * normAndSimplifyReptdly(const CEvaluationTree *tree0, unsigned int depth=0)
recursion_limit_exception(LIMIT_TYPE type)
static bool has_duplicate_nodes(const CEvaluationNode *pNode)
static std::pair< CEvaluationNode *, CEvaluationNode * > factorize(const std::vector< CEvaluationNode * > &additions, const std::vector< CEvaluationNode * > &subtractions)
static void swapNegativeNumbers(std::vector< CEvaluationNode * > &v1, std::vector< CEvaluationNode * > &v2)
static CEvaluationNode * expandPowerBases(const CEvaluationNode *pRoot)
static CEvaluationNode * eliminateNestedPowers(const CEvaluationNode *pOrig)
static const CEvaluationNode NEUTRAL_ELEMENT_ADD
static CEvaluationNode * simplify(const CEvaluationNode *pOrig)
static CEvaluationNode * expandPowerNodes(const CEvaluationNode *pOrig)
static CEvaluationNode * simplifyTree(const CEvaluationNode *node)
static CEvaluationNode * elementaryEliminationDivide(const CEvaluationNode *pDivideNode)
CEvaluationNode *& operator*()
static std::vector< product_match > matchPowerBases(const std::vector< const CEvaluationNode * > &multiplications, const std::vector< const CEvaluationNode * > &divisions)
std::set< unsigned int > subtraction_indices
static void findNegativeNumbers(std::vector< const CEvaluationNode * > &v1, std::vector< CEvaluationNode * > &v2)
static const CEvaluationNode NEUTRAL_ELEMENT_MULTIPLY
static const CEvaluationNode NEUTRAL_ELEMENT_OR
static CEvaluationNode * elementaryEliminationPlus(const CEvaluationNode *pPlusNode)
static CEvaluationNode * createOperatorChain(CEvaluationNodeOperator::SubType type, const char *data, const std::vector< CEvaluationNode * > &nodes)
std::set< unsigned int > addition_indices
static void printPointers(const CEvaluationNode *pNode, const char *indent="")
static const CEvaluationNode ONE_NODE
static CNormalFraction * normAndSimplify(const CEvaluationNode *root0)
static const unsigned int RECURSION_LIMIT
static const CEvaluationNode ZERO_NODE
static CEvaluationNode * elementaryEliminationPower(const CEvaluationNode *pPowerNode)
static void splitProduct(const CEvaluationNode *pRoot, std::vector< const CEvaluationNode * > &multiplications, std::vector< const CEvaluationNode * > &divisions, bool division)
static CEvaluationNode * newEvaluateNumbers(const CEvaluationNode *pOrig)
static CEvaluationNode * product2fraction(const CEvaluationNode *pOrig)
static CEvaluationNode * elementaryEliminationMinus(const CEvaluationNode *pMinusNode)
static std::vector< std::pair< CEvaluationNode *, CEvaluationNode * > > matchSummands(const std::vector< CEvaluationNode * > &additions, const std::vector< CEvaluationNode * > &subtractions)
static CEvaluationNode * eliminate(const CEvaluationNode *pOrig)
static CEvaluationNode * multiply(const CEvaluationNode *pNode1, const CEvaluationNode *pNode2)
static CEvaluationNode * simplifyTreeReptdly(const CEvaluationNode *root0)
static CEvaluationNode * elementaryElimination(CEvaluationNode *pOrig)
static void order(const CEvaluationNode *pRoot, std::list< const CEvaluationNode * > &orderList)
static CEvaluationNode * expandProducts(const CEvaluationNode *pOrig)
static CEvaluationNode * eliminatePowersOfFractions(const CEvaluationNode *pOrig)
CEvaluationNodeDepthFirstIterator & operator=(CEvaluationNode *pNode)
static const CEvaluationNode TIMES_NODE
CEvaluationNodeDepthFirstIterator & operator++()
static CEvaluationNode * elementaryEliminationFunction(const CEvaluationNode *pFunctionNode)
CEvaluationNodeDepthFirstIterator(CEvaluationNode *pRoot)
static CEvaluationNode * createChain(const CEvaluationNode *pLink, const CEvaluationNode *pNeutralElement, const std::vector< const CEvaluationNode * > &elements)
static const CEvaluationNode PLUS_NODE
static CEvaluationNode * newCancel(const CEvaluationNode *pOrig)
CEvaluationNode * pExponentNode
CEvaluationNode *& operator->()
static CEvaluationNode * eliminateDirectlyNestedFractions(const CEvaluationNode *pOrig)
static void findSummands(const CEvaluationNode *pRoot, std::vector< const CEvaluationNode * > &summands)
static CEvaluationNode * expandPowerExponents(const CEvaluationNode *pRoot)
static CEvaluationNode * elementaryEliminationMultiply(const CEvaluationNode *pMultiplyNode)