* Implementation of sequences of expression pairs. */
/*
- * GiNaC Copyright (C) 1999-2016 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2019 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
}
newepv = new epvector;
newepv->reserve(epv.size());
- for (epvector::const_iterator j=epv.begin(); j!=i; ++j) {
+ for (auto j=epv.begin(); j!=i; ++j) {
newepv->push_back(*j);
}
newepv->push_back(x);
bool expairseq::expair_needs_further_processing(epp it)
{
+ if (is_exactly_a<numeric>(it->rest) &&
+ it->coeff.is_equal(_ex1)) {
+ // the pair {<n>, 1} has yet to be absorbed into overall_coeff
+ return true;
+ }
return false;
}
this->can_make_flat(cit)) {
ex newrest = mf.handle_factor(cit.rest, cit.coeff);
const expairseq &subseqref = ex_to<expairseq>(newrest);
- combine_overall_coeff(ex_to<numeric>(subseqref.overall_coeff),
- ex_to<numeric>(cit.coeff));
+ combine_overall_coeff(subseqref.overall_coeff, cit.coeff);
for (auto & cit_s : subseqref.seq) {
seq.push_back(expair(cit_s.rest,
ex_to<numeric>(cit_s.coeff).mul_dyn(ex_to<numeric>(cit.coeff))));