本文整理汇总了C++中lst::op方法的典型用法代码示例。如果您正苦于以下问题:C++ lst::op方法的具体用法?C++ lst::op怎么用?C++ lst::op使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类lst
的用法示例。
在下文中一共展示了lst::op方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compile_ex
void compile_ex(const lst& exprs, const lst& syms, FUNCP_CUBA& fp, const std::string filename)
{
lst replacements;
for (std::size_t count=0; count<syms.nops(); ++count) {
std::ostringstream s;
s << "a[" << count << "]";
replacements.append(syms.op(count) == symbol(s.str()));
}
std::vector<ex> expr_with_cname;
for (std::size_t count=0; count<exprs.nops(); ++count) {
expr_with_cname.push_back(exprs.op(count).subs(replacements));
}
std::ofstream ofs;
std::string unique_filename = filename;
global_excompiler.create_src_file(unique_filename, ofs);
ofs << "void compiled_ex(const int* an, const double a[], const int* fn, double f[])" << std::endl;
ofs << "{" << std::endl;
for (std::size_t count=0; count<exprs.nops(); ++count) {
ofs << "f[" << count << "] = ";
expr_with_cname[count].print(GiNaC::print_csrc_double(ofs));
ofs << ";" << std::endl;
}
ofs << "}" << std::endl;
ofs.close();
global_excompiler.compile_src_file(unique_filename, filename.empty());
// This is not standard compliant! ... no conversion between
// pointer-to-functions and pointer-to-objects ...
fp = (FUNCP_CUBA) global_excompiler.link_so_file(unique_filename+".so", filename.empty());
}
示例2: generate_lag_assignment
static void generate_lag_assignment(ofstream& fout, string name, const lst& lag,
symbol& indvar, ex& history_formula)
{
fout << " if (" << indvar << " < " << lag.op(3) << ") {\n";
fout << " " << lag.op(0) << " = " << history_formula.subs(indvar == indvar - lag.op(3)) << endl;
fout << " }\n";
fout << " else {\n";
fout << " " << lag.op(0) << " = lagvalue(" << indvar - lag.op(3) << ", " << lag.op(1) << ")\n";
fout << " }\n";
}
示例3: MBlbl_int
/**
*
* loop momentums,propagator expressions,
* invariants substitutions,propagator powers,number of loops
*
\param k_lst loop momentums list
\param p_lst propagator expressions list
\param subs_lst invariants substitutions list
\param nu propagator powers list
\param l number of loops
\return
*
*/
RoMB_loop_by_loop:: RoMB_loop_by_loop(
lst k_lst,
lst p_lst,
lst subs_lst,
lst nu,
bool subs_U
)
{
try
{
/*
empty integral
*/
MBintegral MBlbl_int(lst(),lst(),1);
/*
Full set of unused propagators, will change
*/
exlist input_prop_set;//( p_lst.begin(),p_lst.end());
/*
map for propagator powers
*/
exmap prop_pow_map;
for(lst::const_iterator Pit = p_lst.begin(); Pit != p_lst.end(); ++Pit)
{
input_prop_set.push_back(Pit->expand());
prop_pow_map[Pit->expand()] = nu.op(std::distance(p_lst.begin(),Pit));
}
cout<<"INPSET: "<<input_prop_set<<endl;
/*
Iterate over momentums k1,k2,k3,etc.
*/
unsigned int displacement_x = 0;
unsigned int displacement_w = 0;
for(lst::const_iterator kit = k_lst.begin(); kit != k_lst.end(); ++kit)
{
// Integral Normalization coefficient
// MBlbl_int *= pow(I,k_lst.nops());
MBlbl_int *= 1/tgamma(1+get_symbol("eps"));
//MBlbl_int *= pow(Pi,2-get_symbol("eps"));
//MBlbl_int *= exp(Euler*get_symbol("eps"));
cout<<"PROP_POW_MAP "<<prop_pow_map<<endl;
/*
temporary set of propagators, with all momentum,except deleted
*/
exlist tmp_p_lst(input_prop_set.begin(), input_prop_set.end());
/*
temporary set of propagators, with KIT momentum
*/
lst P_with_k_lst;
BOOST_FOREACH(ex prop_tmp, tmp_p_lst)
{
if(prop_tmp.has(*kit))
{
P_with_k_lst.append(prop_tmp);
input_prop_set.remove(prop_tmp);
}
}
cout<< "Set wo k_i "<<input_prop_set<<endl;
cout<<" PWKlst "<<P_with_k_lst<<endl;
bool direct_formula_applied = false;
// if only one term in PWKLST use well known formulas
// [Smirnov A.1]
if(!direct_formula_applied && (P_with_k_lst.nops() == 1))
{
ex pr_t = P_with_k_lst.op(0);
ex nu_t = prop_pow_map[pr_t];
exmap repls;
BOOST_ASSERT_MSG(pr_t.match(-pow(*kit,2) + wild(2)),"ONE PROP");
if(pr_t.match(-pow(*kit,2) + wild(2),repls))cout<<"repls: "<<repls<<endl;
ex mass_tadpole = (tgamma(nu_t+get_symbol("eps")-2)/tgamma(nu_t)*pow(wild(2).subs(repls),-nu_t-get_symbol("eps")+2));
cout<<mass_tadpole<<endl;
MBlbl_int *= mass_tadpole;
MBlbl_int.add_pole(nu_t+get_symbol("eps")-2);
direct_formula_applied = true;
}
if(!direct_formula_applied && (P_with_k_lst.nops() == 2))
{
//TWO terms in PWK_LST, [Smirnov A.4]
exmap repls_tad;
if((P_with_k_lst.nops()==2) &&
(( (P_with_k_lst.op(0).match(-pow(*kit,2))) && (P_with_k_lst.op(1).match(-pow(*kit,2)+wild())))||
( (P_with_k_lst.op(1).match(-pow(*kit,2))) && (P_with_k_lst.op(0).match(-pow(*kit,2)+wild()))))
&& !wild().has(*kit)
//.........这里部分代码省略.........