20 if(!is_zero(ex_var_map[expr])) {
21 return ex_var_map[expr];
27 for(
auto item : expr) ret +=
Parse(item,
false);
28 }
else if(is_a<lst>(expr)) {
30 for(
auto item : expr) oret.append(
Parse(item,
false));
32 }
else if(is_a<mul>(expr)) {
34 for(
auto item : expr) ret *=
Parse(item,
false);
35 }
else if(is_a<power>(expr)) {
36 ret = power(
Parse(expr.op(0),
false), expr.op(1));
37 }
else if(expr.match(log(
w))) {
38 ret = log(
Parse(expr.op(0),
false));
39 }
else if(expr.match(exp(
w))) {
40 ret = exp(
Parse(expr.op(0),
false));
41 }
else if(expr.match(sqrt(
w))) {
42 ret = sqrt(
Parse(expr.op(0),
false));
45 ss <<
oc <<
"[" << no <<
"]";
46 Symbol so(ss.str().c_str());
47 o_ex_vec.push_back(make_pair(no, ret));
49 ex_var_map[expr] = so;
64 auto itr = exn.find(expr);
67 return exv[itr->second];
74 for(
auto item : expr) ret +=
Parse(item,
false);
75 }
else if(is_a<lst>(expr)) {
77 for(
auto item : expr) oret.append(
Parse(item,
false));
79 }
else if(is_a<mul>(expr)) {
81 for(
auto item : expr) ret *=
Parse(item,
false);
82 }
else if(is_a<power>(expr)) {
83 ret = power(
Parse(expr.op(0),
false), expr.op(1));
84 }
else if(expr.match(log(
w))) {
85 ret = log(
Parse(expr.op(0),
false));
86 }
else if(expr.match(exp(
w))) {
87 ret = exp(
Parse(expr.op(0),
false));
88 }
else if(expr.match(sqrt(
w))) {
89 ret = sqrt(
Parse(expr.op(0),
false));
96 if(!reset)
return res;
98 map<int,int> s2l, l2s;
99 MapFunction map([&l2s,
this](
const ex & e, MapFunction &
self)->ex{
100 if(!e.has(iWF(
w)))
return e;
101 else if(e.match(iWF(
w))) {
104 return Symbol(
v+
"["+to_string(l2s[wi])+
"]");
105 }
else return e.map(
self);
110 for(
int i=0; i<no; i++) {
111 cout << i <<
"/" << no <<
"/" << max << endl;
113 if(next!=-1) { on = next; }
114 else { on = max; max++; }
117 on_ex_vec.push_back(make_pair(on, map(exv[i])));
119 for(
int j=0; j<max; j++)
if(used[s2l[j]]<1) {
ex Parse(ex expr, bool reset=true)
vector< pair< int, ex > > os()
const vector< pair< int, ex > > & vs()
class extended to GiNaC symbol class, represent a positive symbol
namespace for Numerical integration with Sector Decomposition method
bool isFunction(const ex &e, string func_name)
int ex2int(ex num)
ex to integer