Class xlifepp::SymbolicTermMatrix#

class SymbolicTermMatrix#

handles expressions involving xlifepp::TermMatrix’s

xlifepp::SymbolicTermMatrix class is designed to handle any algebraic expression involving some xlifepp::TermMatrix The following symbolic operations are available + - * *scalar /scalar inv conj adj trans Id No real operations on xlifepp::TermMatrix are performed only the product by a xlifepp::TermVector may be performed example: A + trans(K)*inv(M)*K inv(A+B) is not allowed! We use a binary tree to represent such symbolic operation, a node representing an operation on one or two xlifepp::SymbolicTermMatrix The previous example has the following tree representation

                                 (+)
                         |--------|--------|
                      (Id)A               (*)
                                  |--------|-------|
                               (trans)K           (*)
                                          |--------|-------|
                                         (inv)M          (Id)K
The product by a xlifepp::TermVector will produce the xlifepp::TermVector A*X + trans(K)*inv(M)*K*X For instance A*B is not recognized as symbolic because the product of two xlifepp::TermMatrix exists so writing ~A*B or A*~B or ~A*~B will enforce a symbolic representation!

Public Functions

inline SymbolicTermMatrix()#

constructor

~SymbolicTermMatrix()#

Destructor.

void print(std::ostream&) const#

print tools

Public Members

complex_t coef_#

coefficient product

bool delMat_#

true if TermMatrix has to be deleted

SymbolicOperation op_#

algebraic operator related to the current node

SymbolicTermMatrix *st2_#

may be one or two SymbolicTermMatrix (pointers)

const TermMatrix *tm_#

may be one TermMatrix (pointers)