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);
86 static void RRTables(
const string & filename,
int pnum);
87 static void ThieleTables(
const string & filename,
int si,
int ei);
107 string Fout(
const ex & expr);
108 ex Fin(
const string & expr);
109 map<ex,unsigned long long,ex_is_less> i2w;
110 map<unsigned long long,ex> w2i;
138 string Fout(
const ex & expr);
139 ex Fin(
const string & expr);
140 map<ex,unsigned long long,ex_is_less> i2w;
141 map<unsigned long long,ex> w2i;
151 vector<pair<int,int>>
cs;
153 if(ns.nops() !=
cs.size())
return false;
154 for(
int i=0;
cs.size()-i>0; i++) {
155 if(
cs[i].first==-1 && ns.op(i)>
cs[i].second)
return false;
156 else if(
cs[i].first==1 && ns.op(i)<
cs[i].second)
return false;
157 else if(
cs[i].first==0 && !ns.op(i).is_equal(
cs[i].second))
return false;
163 for(
auto item :
cs) ret.append(lst{item.first, item.second});
169 cs.push_back(make_pair(
ex2int(item.op(0)),
ex2int(item.op(1))));
174 void Export()
override;
176 void Import()
override;
180 vector<pair<Condition,ex>> ConSolVec;
187 bool using_uw =
true;
189 void Export()
override;
191 void Import()
override;
207 string Fout(
const ex & expr);
208 ex Fin(
const string & expr);
209 map<ex,long long,ex_is_less> i2w;
210 map<long long,ex> w2i;
219 void Export()
override;
221 void Import()
override;
223 void Solve(
const ex & sector,
const map<int,int> & a2n={});
224 void SolveSparse(
const ex & sector,
const map<int,int> & a2n={});
231 lst
LoopUF(
const IBP & fire,
const ex & corner);
232 lst
UF(
const ex & ps,
const ex & ns,
const ex & loops,
const ex & tloops,
const ex & lsubs,
const ex & tsubs);
233 pair<exmap,lst>
FindRules(vector<IBP*> fs,
bool mi=
true, std::function<lst(
const IBP &,
const ex &)> uf=LoopUF);
234 inline pair<exmap,lst>
FindRules(
IBP& ibp,
bool mi=
true, std::function<lst(
const IBP &,
const ex &)> uf=LoopUF) {
240 ex GPolynomial(
const IBP &
IBP);
241 void GPermutation(
const ex & uf,
const lst & xs);
vector< pair< int, int > > cs
IBP reduction using Direc method.
class used to wrap error message
IBP reduction using FIRE program.
static void RRTables(const string &filename, int pnum)
void Import() override
Import tables
static void ThieleTables(const string &filename, int si, int ei)
void Export() override
Export start config intgral etc. files.
void Run() override
Run FIRE reduction.
IBP base class for IBP reduction.
IBP reduction using KIRA program.
void Export() override
Export input data for KIRA.
void Import() override
import kira result
void Run() override
invoke kira program for reduction
IBP reduction using Solver method.
IBP reduction using KIRA program with user-defined equations.
void Export() override
Export input data for KIRA.
void Import() override
import kira result
void Run() override
invoke kira program for reduction
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