23 #ifndef LIBRARY_EVALUATOR_H_INCLUDED 24 #define LIBRARY_EVALUATOR_H_INCLUDED 36 using ID_t =
long long int;
39 inline static const std::string name =
"IT";
49 std::vector<Expr>
const &getUnEval()
const;
50 std::vector<Expr> &getUnEval();
51 std::vector<csl::Tensor>
const &getTensors()
const;
52 std::vector<csl::Tensor> &getTensors();
54 void setInit(
Expr const &t_init);
55 void setExpr(
Expr const &t_expr);
56 void setID(ID_t t_id);
63 static bool isInstance(
Expr const &expr);
65 void replaceTensors();
67 void print(std::ostream &out)
const;
72 bool complexParameters =
false 75 static void printExpression(
79 std::string
const &begin
83 std::ostream &operator<<(
90 static Expr make_init(
Expr const &t_init);
92 static Expr make_expr(ID_t t_id);
94 static bool compare_expr(
99 static std::string idToString(ID_t
id);
106 mutable std::vector<Expr> unEval;
107 mutable std::vector<csl::Tensor> tensors;
115 using ID_t = LibEval::ID_t;
117 static inline size_t maxLeafs = 20;
123 std::vector<LibEval> evals;
130 std::vector<LibEval> &getEval();
131 std::vector<LibEval>
const &getEval()
const;
132 std::vector<Expr>
const &getUnEval()
const;
133 std::vector<Expr> &getUnEval();
134 std::vector<csl::Tensor>
const &getTensors()
const;
135 std::vector<csl::Tensor> &getTensors();
137 void setEval(std::vector<LibEval>
const &t_eval);
138 void setEval(std::vector<LibEval> &&t_eval);
146 void simplifyProds(
size_t min_factors = 2);
151 bool findIntermediates =
true 156 bool findIntermediates,
157 std::map<csl::AbstractParent const*, csl::Expr> &parsedAbbrevs
162 bool findIntermediates =
true 167 bool findIntermediates,
168 std::map<csl::AbstractParent const*, csl::Expr> &parsedAbbrevs
171 void gatherUnEvalAndTensors(
Expr const &result);
173 void print(std::ostream &out)
const;
194 std::vector<LibEval> &newEvals,
195 std::vector<int> &nOccurences
198 static Expr expandIProd(
Expr const &iprod);
199 void addUnEval(
Expr const& expr)
const;
210 std::vector<LibEval> eval;
212 std::map<csl::AbstractParent const *, Expr> abbreviations;
214 mutable std::vector<Expr> unEval;
216 mutable std::vector<csl::Tensor> tensors;
220 std::ostream &operator<<(
225 return out << perf.nEval <<
" evals, " 226 << perf.nOperations <<
" operations.\n";
Namespace for csl library.
Definition: abreviation.h:34
Definition: libraryevaluator.h:32
bool operator==(const Expr &a, const Expr &b)
see Abstract::operator==()
Definition: abstract.cpp:1398
Definition: libraryevaluator.h:111
Base classes for all exprs in the program.
Definition: indicial.h:675
bool operator!=(const Expr &a, const Expr &b)
see Abstract::operator!=()
Definition: abstract.cpp:1404
Manages a std::vector of Index, to be used by an TensorElement.
Definition: index.h:472
Definition: libraryevaluator.h:119
Expression type/.
Definition: abstract.h:1573