+
+ ex buf = recombine_pair_to_ex(*it);
+
+ int real_ldegree = buf.expand().ldegree(sym-r.rhs());
+ if (real_ldegree == 0) {
+ int orderloop = 0;
+ do {
+ orderloop++;
+ real_ldegree = buf.series(r, orderloop, options).ldegree(sym);
+ } while (real_ldegree == orderloop);
+ }
+
+ ldegrees.push_back(real_ldegree);
+ }
+
+ int degsum = std::accumulate(ldegrees.begin(), ldegrees.end(), 0);
+
+ // Multiply with remaining terms
+ std::vector<int>::const_iterator itd = ldegrees.begin();
+ for (epvector::const_iterator it=itbeg; it!=itend; ++it, ++itd) {
+
+ // do series expansion with adjusted order
+ ex op = recombine_pair_to_ex(*it).series(r, order-degsum+(*itd), options);