- ex e = basis.series(r, order, options);
- int ldeg = ex_to<pseries>(e).ldegree(r.lhs());
- if (intexp * ldeg < 0) {
- e = basis.series(r, order + ldeg*(1-intexp), options);
+ const ex& sym = r.lhs();
+ // find existing minimal degree
+ int real_ldegree = basis.expand().ldegree(sym);
+ if (real_ldegree == 0) {
+ int orderloop = 0;
+ do {
+ orderloop++;
+ real_ldegree = basis.series(r, orderloop, options).ldegree(sym);
+ } while (real_ldegree == orderloop);
+ }
+
+ ex e = basis.series(r, order + real_ldegree*(1-intexp), options);
+
+ ex result;
+ try {
+ result = ex_to<pseries>(e).power_const(intexp, order);