]> www.ginac.de Git - ginac.git/commitdiff
Improve mul::degree so that degree(c*x^(-1), x^(-1)) gives correct result
authorAlexei Sheplyakov <varg@theor.jinr.ru>
Mon, 26 Feb 2007 14:08:48 +0000 (17:08 +0300)
committerAlexei Sheplyakov <varg@theor.jinr.ru>
Thu, 6 Mar 2008 14:15:50 +0000 (17:15 +0300)
In ginsh:

degree(x^(-1), x^(-1));
1
degree(c*x^(-1), x^(-1));
0

Now degree (and ldegree) should work correct with such arguments.

Note: degree() is still inconsistent, i.e.
degree(c*x^(-2), x^(-1));
0

ginac/mul.cpp

index ab1a042b95fc019165395f5994a4a42f446da68f..e1d5e02ea22f2b411fd21db55f9e4a11fc698856 100644 (file)
@@ -317,7 +317,7 @@ int mul::degree(const ex & s) const
        epvector::const_iterator i = seq.begin(), end = seq.end();
        while (i != end) {
                if (ex_to<numeric>(i->coeff).is_integer())
-                       deg_sum += i->rest.degree(s) * ex_to<numeric>(i->coeff).to_int();
+                       deg_sum += recombine_pair_to_ex(*i).degree(s);
                ++i;
        }
        return deg_sum;
@@ -330,7 +330,7 @@ int mul::ldegree(const ex & s) const
        epvector::const_iterator i = seq.begin(), end = seq.end();
        while (i != end) {
                if (ex_to<numeric>(i->coeff).is_integer())
-                       deg_sum += i->rest.ldegree(s) * ex_to<numeric>(i->coeff).to_int();
+                       deg_sum += recombine_pair_to_ex(*i).ldegree(s);
                ++i;
        }
        return deg_sum;