From bb76e4b38b330365934e1b14d2feb2bad416f455 Mon Sep 17 00:00:00 2001 From: Jens Vollinga Date: Mon, 19 Apr 2004 18:27:24 +0000 Subject: [PATCH 1/1] Optimized series expansion. --- ginac/pseries.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ginac/pseries.cpp b/ginac/pseries.cpp index 1efbb65d..bcad8c19 100644 --- a/ginac/pseries.cpp +++ b/ginac/pseries.cpp @@ -785,7 +785,15 @@ ex mul::series(const relational & r, int order, unsigned options) const const epvector::const_iterator itend = seq.end(); for (epvector::const_iterator it=itbeg; it!=itend; ++it) { - ex buf = recombine_pair_to_ex(*it); + ex expon = it->coeff; + int factor = 1; + ex buf; + if (expon.info(info_flags::integer)) { + buf = it->rest; + factor = ex_to(expon).to_int(); + } else { + buf = recombine_pair_to_ex(*it); + } int real_ldegree = 0; try { @@ -801,7 +809,7 @@ ex mul::series(const relational & r, int order, unsigned options) const } while (real_ldegree == orderloop); } - ldegrees.push_back(real_ldegree); + ldegrees.push_back(factor * real_ldegree); } int degsum = std::accumulate(ldegrees.begin(), ldegrees.end(), 0); -- 2.44.0