namespace GiNaC {
/** Helper template for encapsulating the reserve() mechanics of STL containers. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
class container_storage {
protected:
typedef C<ex> STLT;
};
/** Wrapper template for making GiNaC classes out of STL containers. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
class container : public basic, public container_storage<C> {
GINAC_DECLARE_REGISTERED_CLASS(container, basic)
protected:
};
/** Default constructor */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C>::container()
{
setflag(get_default_flags());
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
void container<C>::do_print(const print_context & c, unsigned level) const
{
// always print brackets around seq, ignore upper_precedence
printseq(c, get_open_delim(), ',', get_close_delim(), precedence(), precedence()+1);
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
void container<C>::do_print_tree(const print_tree & c, unsigned level) const
{
c.s << std::string(level, ' ') << class_name() << " @" << this
c.s << std::string(level + c.delta_indent,' ') << "=====" << std::endl;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
void container<C>::do_print_python(const print_python & c, unsigned level) const
{
printseq(c, '[', ',', ']', precedence(), precedence()+1);
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
void container<C>::do_print_python_repr(const print_python_repr & c, unsigned level) const
{
c.s << class_name();
printseq(c, '(', ',', ')', precedence(), precedence()+1);
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
ex container<C>::op(size_t i) const
{
GINAC_ASSERT(i < nops());
return *it;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
ex & container<C>::let_op(size_t i)
{
GINAC_ASSERT(i < nops());
return *it;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
ex container<C>::eval(int level) const
{
if (level == 1)
return thiscontainer(evalchildren(level));
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
ex container<C>::subs(const exmap & m, unsigned options) const
{
// After having subs'ed all children, this method subs'es one final
STLT subsed = subschildren(m, options);
if (!subsed.empty()) {
ex result(thiscontainer(subsed));
- if (is_a<container<C> >(result))
+ if (is_a<container<C>>(result))
return ex_to<basic>(result).subs_one_level(m, options);
else
return result;
} else {
- if (is_a<container<C> >(*this))
+ if (is_a<container<C>>(*this))
return subs_one_level(m, options);
else
return *this;
}
/** Compare two containers of the same type. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
int container<C>::compare_same_type(const basic & other) const
{
GINAC_ASSERT(is_a<container>(other));
return (it1 == it1end) ? (it2 == it2end ? 0 : -1) : 1;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
bool container<C>::is_equal_same_type(const basic & other) const
{
GINAC_ASSERT(is_a<container>(other));
}
/** Add element at front. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::prepend(const ex & b)
{
ensure_if_modifiable();
}
/** Add element at back. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::append(const ex & b)
{
ensure_if_modifiable();
}
/** Remove first element. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::remove_first()
{
ensure_if_modifiable();
}
/** Remove last element. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::remove_last()
{
ensure_if_modifiable();
}
/** Remove all elements. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::remove_all()
{
ensure_if_modifiable();
}
/** Sort elements. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::sort()
{
ensure_if_modifiable();
}
/** Remove adjacent duplicate elements. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
container<C> & container<C>::unique()
{
ensure_if_modifiable();
}
/** Print sequence of contained elements. */
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
void container<C>::printseq(const print_context & c, char openbracket, char delim,
char closebracket, unsigned this_precedence,
unsigned upper_precedence) const
c.s << closebracket;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
typename container<C>::STLT container<C>::evalchildren(int level) const
{
if (level == 1)
return s;
}
-template <template <class T, class = std::allocator<T> > class C>
+template <template <class T, class = std::allocator<T>> class C>
typename container<C>::STLT container<C>::subschildren(const exmap & m, unsigned options) const
{
// returns an empty container if nothing had to be substituted
// lookup table for factors built from Bernoulli numbers
// see fill_Xn()
-std::vector<std::vector<cln::cl_N> > Xn;
+std::vector<std::vector<cln::cl_N>> Xn;
// initial size of Xn that should suffice for 32bit machines (must be even)
const int xninitsizestep = 26;
int xninitsize = xninitsizestep;
// lookup table for special Euler-Zagier-Sums (used for S_n,p(x))
// see fill_Yn()
-std::vector<std::vector<cln::cl_N> > Yn;
+std::vector<std::vector<cln::cl_N>> Yn;
int ynsize = 0; // number of Yn[]
int ynlength = 100; // initial length of all Yn[i]
int Sm = 0;
int Smp1 = 0;
- std::vector<std::vector<cln::cl_N> > crG(s.size() - 1, std::vector<cln::cl_N>(L2 + 1));
+ std::vector<std::vector<cln::cl_N>> crG(s.size() - 1, std::vector<cln::cl_N>(L2 + 1));
for (int m=0; m < (int)s.size() - 1; m++) {
Sm += s[m];
Smp1 = Sm + s[m+1];
// [Cra] section 4
-static void calc_f(std::vector<std::vector<cln::cl_N> >& f_kj,
+static void calc_f(std::vector<std::vector<cln::cl_N>>& f_kj,
const int maxr, const int L1)
{
cln::cl_N t0, t1, t2, t3, t4;
int i, j, k;
- std::vector<std::vector<cln::cl_N> >::iterator it = f_kj.begin();
+ std::vector<std::vector<cln::cl_N>>::iterator it = f_kj.begin();
cln::cl_F one = cln::cl_float(1, cln::float_format(Digits));
t0 = cln::exp(-lambda);
// [Cra] (3.1)
static cln::cl_N crandall_Z(const std::vector<int>& s,
- const std::vector<std::vector<cln::cl_N> >& f_kj)
+ const std::vector<std::vector<cln::cl_N>>& f_kj)
{
const int j = s.size();
}
}
- std::vector<std::vector<cln::cl_N> > f_kj(L1);
+ std::vector<std::vector<cln::cl_N>> f_kj(L1);
calc_f(f_kj, maxr, L1);
const cln::cl_N r0factorial = cln::factorial(r[0]-1);