16 using namespace GiNaC;
19 DECLARE_FUNCTION_1P(
a)
39 int ProblemNumber = 0;
44 bool IsAlwaysZero =
false;
46 virtual void Export() {
throw Error(
"Export() not implemented!"); };
47 virtual void Run() {
throw Error(
"Run() not implemented!"); };
48 virtual void Import() {
throw Error(
"Import() not implemented!"); };
52 void garExport(
string garfn);
53 void garImport(
string garfn);
57 exmap Dinv(
const lst & ns);
58 ex D(
const ex & x,
const lst &ns);
59 void RM(
bool keep_start_config=
false);
60 void rm(
const string & pat);
62 static void ReShare(
const vector<IBP*> & fs);
71 void Export()
override;
73 void Import()
override;
83 static void RRTables(
const string & filename,
int pnum);
84 static void ThieleTables(
const string & filename,
int si,
int ei);
99 void Export()
override;
101 void Import()
override;
104 string Fout(
const ex & expr);
105 ex Fin(
const string & expr);
106 map<ex,unsigned long long,ex_is_less> i2w;
107 map<unsigned long long,ex> w2i;
119 bool using_uw =
true;
121 void Export()
override;
123 void Import()
override;
135 string Fout(
const ex & expr);
136 ex Fin(
const string & expr);
137 map<ex,unsigned long long,ex_is_less> i2w;
138 map<unsigned long long,ex> w2i;
148 vector<pair<int,int>>
cs;
150 if(ns.nops() != cs.size())
return false;
151 for(
int i=0; cs.size()-i>0; i++) {
152 if(cs[i].first==-1 && ns.op(i)>cs[i].second)
return false;
153 else if(cs[i].first==1 && ns.op(i)<cs[i].second)
return false;
154 else if(cs[i].first==0 && !ns.op(i).is_equal(cs[i].second))
return false;
160 for(
auto item : cs) ret.append(lst{item.first, item.second});
166 cs.push_back(make_pair(
ex2int(item.op(0)),
ex2int(item.op(1))));
171 void Export()
override;
173 void Import()
override;
177 vector<pair<Condition,ex>> ConSolVec;
184 bool using_uw =
true;
186 void Export()
override;
188 void Import()
override;
204 string Fout(
const ex & expr);
205 ex Fin(
const string & expr);
206 map<ex,long long,ex_is_less> i2w;
207 map<long long,ex> w2i;
216 void Export()
override;
218 void Import()
override;
220 void Solve(
const ex & sector,
const map<int,int> & a2n={});
221 void SolveSparse(
const ex & sector,
const map<int,int> & a2n={});
228 lst
LoopUF(
const IBP & fire,
const ex & corner);
229 lst
UF(
const ex & ps,
const ex & ns,
const ex & loops,
const ex & tloops,
const ex & lsubs,
const ex & tsubs);
230 pair<exmap,lst>
FindRules(vector<IBP*> fs,
bool mi=
true, std::function<lst(
const IBP &,
const ex &)> uf=
LoopUF);
vector< pair< int, int > > cs
IBP reduction using Direc method.
class used to wrap error message
IBP reduction using FIRE program.
IBP base class for IBP reduction.
IBP reduction using KIRA program.
IBP reduction using Solver method.
IBP reduction using KIRA program with user-defined equations.
void GPermutation(const ex &uf, const lst &xs)
ex GPolynomial(const IBP &ibp)
void ReShare(const ex &e)
lst LoopUF(const IBP &ibp, const ex &idx)
UF function.
pair< exmap, lst > FindRules(vector< IBP * > fs, bool mi, std::function< lst(const IBP &, const ex &)> uf)
Find Rules for Integral or Master Integral.
lst UF(const ex &props, const ex &ns, const ex &loops, const ex &tloops, const ex &lsubs, const ex &tsubs)
UF function, from FIRE.m.
exmap SortPermutation(const ex &in_expr, const lst &xs)
Sort for all permuations, and return xs w.r.t. 1st permutation.
int ex2int(ex num)
ex to integer