} else {
- if (precedence <= level)
+ if (precedence() <= level)
c.s << "(";
std::string par_open = is_of_type(c, print_latex) ? "{(" : "(";
Order(power(var-point,i->coeff)).print(c);
}
- if (precedence <= level)
+ if (precedence() <= level)
c.s << ")";
}
}
return (new pseries(relational(var,point), new_seq))->setflag(status_flags::dynallocated | status_flags::evaluated);
}
-ex pseries::subs(const lst & ls, const lst & lr) const
+ex pseries::subs(const lst & ls, const lst & lr, bool no_pattern) const
{
// If expansion variable is being substituted, convert the series to a
// polynomial and do the substitution there because the result might
// no longer be a power series
if (ls.has(var))
- return convert_to_poly(true).subs(ls, lr);
+ return convert_to_poly(true).subs(ls, lr, no_pattern);
// Otherwise construct a new series with substituted coefficients and
// expansion point
newseq.reserve(seq.size());
epvector::const_iterator it = seq.begin(), itend = seq.end();
while (it != itend) {
- newseq.push_back(expair(it->rest.subs(ls, lr), it->coeff));
+ newseq.push_back(expair(it->rest.subs(ls, lr, no_pattern), it->coeff));
++it;
}
- return (new pseries(relational(var,point.subs(ls, lr)), newseq))->setflag(status_flags::dynallocated);
+ return (new pseries(relational(var,point.subs(ls, lr, no_pattern)), newseq))->setflag(status_flags::dynallocated);
}
/** Implementation of ex::expand() for a power series. It expands all the
const symbol &s = static_cast<symbol &>(*r.lhs().bp);
if (!coeff.is_zero())
- seq.push_back(expair(coeff, numeric(0)));
+ seq.push_back(expair(coeff, _ex0()));
int n;
for (n=1; n<order; ++n) {
return e;
}
-//////////
-// static member variables
-//////////
-
-// protected
-
-unsigned pseries::precedence = 38; // for clarity just below add::precedence
-
} // namespace GiNaC