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);
87 static void RRTables(
const string & filename,
int pnum);
88 static void ThieleTables(
const string & filename,
int si,
int ei);
108 string Fout(
const ex & expr);
109 ex Fin(
const string & expr);
110 map<ex,unsigned long long,ex_is_less> i2w;
111 map<unsigned long long,ex> w2i;
139 string Fout(
const ex & expr);
140 ex Fin(
const string & expr);
141 map<ex,unsigned long long,ex_is_less> i2w;
142 map<unsigned long long,ex> w2i;
152 vector<pair<int,int>>
cs;
154 if(ns.nops() !=
cs.size())
return false;
155 for(
int i=0;
cs.size()-i>0; i++) {
156 if(
cs[i].first==-1 && ns.op(i)>
cs[i].second)
return false;
157 else if(
cs[i].first==1 && ns.op(i)<
cs[i].second)
return false;
158 else if(
cs[i].first==0 && !ns.op(i).is_equal(
cs[i].second))
return false;
164 for(
auto item :
cs) ret.append(lst{item.first, item.second});
170 cs.push_back(make_pair(
ex2int(item.op(0)),
ex2int(item.op(1))));
175 void Export()
override;
177 void Import()
override;
181 vector<pair<Condition,ex>> ConSolVec;
188 bool using_uw =
true;
190 void Export()
override;
192 void Import()
override;
208 string Fout(
const ex & expr);
209 ex Fin(
const string & expr);
210 map<ex,long long,ex_is_less> i2w;
211 map<long long,ex> w2i;
220 void Export()
override;
222 void Import()
override;
224 void Solve(
const ex & sector,
const map<int,int> & a2n={});
225 void SolveSparse(
const ex & sector,
const map<int,int> & a2n={});
232 lst
LoopUF(
const IBP & fire,
const ex & corner);
233 lst
UF(
const ex & ps,
const ex & ns,
const ex & loops,
const ex & tloops,
const ex & lsubs,
const ex & tsubs);
234 pair<exmap,lst>
FindRules(vector<IBP*> fs,
bool mi=
true, std::function<lst(
const IBP &,
const ex &)> uf=LoopUF);
235 inline pair<exmap,lst>
FindRules(
IBP& ibp,
bool mi=
true, std::function<lst(
const IBP &,
const ex &)> uf=LoopUF) {
241 ex GPolynomial(
const IBP &
IBP);
242 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