ex expairseq::map(map_function &f) const
{
std::auto_ptr<epvector> v(new epvector);
- v->reserve(seq.size());
+ v->reserve(seq.size()+1);
epvector::const_iterator cit = seq.begin(), last = seq.end();
while (cit != last) {
if (overall_coeff.is_equal(default_overall_coeff()))
return thisexpairseq(v, default_overall_coeff(), true);
- else
- return thisexpairseq(v, f(overall_coeff), true);
+ else {
+ ex newcoeff = f(overall_coeff);
+ if(is_a<numeric>(newcoeff))
+ return thisexpairseq(v, newcoeff, true);
+ else {
+ v->push_back(split_ex_to_pair(newcoeff));
+ return thisexpairseq(v, default_overall_coeff(), true);
+ }
+ }
}
/** Perform coefficient-wise automatic term rewriting rules in this class. */