+
+ if (seq.size() > 1) {
+
+ // re-calculation of series
+
+ pseries newacc;
+
+ const int degsum = std::accumulate(ldegrees.begin(), ldegrees.end(), 0);
+
+ // Multiply with remaining terms
+ const epvector::const_reverse_iterator itbeg = seq.rbegin();
+ const epvector::const_reverse_iterator itend = seq.rend();
+ std::vector<int>::const_reverse_iterator itd = ldegrees.rbegin();
+ for (epvector::const_reverse_iterator it=itbeg; it!=itend; ++it, ++itd) {
+
+ ex op = recombine_pair_to_ex(*it).series(r, order-degsum+(*itd), options);
+
+ // Series multiplication
+ if (it==itbeg)
+ newacc = ex_to<pseries>(op);
+ else
+ newacc = ex_to<pseries>(newacc.mul_series(ex_to<pseries>(op)));
+ }
+ return newacc.mul_const(ex_to<numeric>(overall_coeff));
+ } else {
+ return acc.mul_const(ex_to<numeric>(overall_coeff));
+ }