23#ifndef GINAC_EMPL_HELPERS_H
24#define GINAC_EMPL_HELPERS_H
36template<
typename Type>
55 template<
typename T = Type>
56 static typename std::enable_if<std::is_base_of<basic, T>::value,
bool>::type
check_type(
const ex& expr);
58 template<
typename T = Type>
59 static typename std::enable_if<!std::is_base_of<basic, T>::value,
bool>::type
check_type(
const ex& expr);
91template<
typename Kernel>
93 const std::vector<Kernel>& args,
94 const std::vector<ex>& endpoints,
95 const std::function<
ex(std::vector<Kernel>& new_args,
const ex& start,
const ex& end)>& construct
110 pathintegral_term(
const pathintegral_term& a,
const pathintegral_term& b,
int power_offset=0);
116 ex evaluate(
const ex& upper_bound,
const std::vector<ex>& path)
const;
121 static ex G_path(
const std::vector<ex>& args,
const std::vector<ex>& path);
122 static ex G_path(
const std::vector<ex>& args,
const ex& start,
const ex& end);
142 std::set<pathintegral_term>::const_iterator
begin()
const {
return terms.begin(); }
143 std::set<pathintegral_term>::const_iterator
end()
const {
return terms.end(); }
152 template<
typename... Args,
typename =
typename std::enable_if<(
sizeof...(Args)>1)>::type>
std::set< pathintegral_term >::const_iterator begin() const
std::set< pathintegral_term > terms
std::set< pathintegral_term >::const_iterator end() const
pathintegral_term(ex prefactor, int power, const std::vector< ex > &polylog={}, ex denom=0)
friend bool operator<(const pathintegral_term &lh, const pathintegral_term &rh)
void integrate(const ex &start, pathintegral_term_list &integrand, pathintegral_term_list &result) const
static ex G_path(const std::vector< ex > &args, const std::vector< ex > &path)
std::vector< ex > polylog
friend class pathintegral_term_list
ex evaluate(const ex &upper_bound, const std::vector< ex > &path) const
friend std::ostream & operator<<(std::ostream &os, const pathintegral_term &term)
Lightweight wrapper for GiNaC's symbolic objects.
This class holds a two-component object, a basis and and exponent representing exponentiation.
Interface to GiNaC's light-weight expression handles.
Replacement for map<> using hash tables.
ex deconcatenate_path(const std::vector< Kernel > &args, const std::vector< ex > &endpoints, const std::function< ex(std::vector< Kernel > &new_args, const ex &start, const ex &end)> &construct)
bool operator<(const pathintegral_term &a, const pathintegral_term &b)
std::ostream & operator<<(std::ostream &os, const pathintegral_term &term)
std::vector< std::vector< int > > integer_partition(const int n, const int m)
std::unordered_map< ex, T, Hash, KeyEqual, Allocator > exhashmap
ex evalf(const ex &thisex)