Fix bug in H_evalf: Flag has_minus_one is now computed where it is needed.
authorStefan Weinzierl <weinzierl@uni-mainz.de>
Mon, 7 Oct 2019 18:32:01 +0000 (20:32 +0200)
committerRichard Kreckel <kreckel@ginac.de>
Mon, 7 Oct 2019 18:32:01 +0000 (20:32 +0200)
This bug has been reported and fixed by Yannick Ulrich <yannick.ulrich@psi.ch>.

ginac/inifcns_nstdsums.cpp

index f040e8a..c20526b 100644 (file)
@@ -3223,7 +3223,6 @@ static ex H_evalf(const ex& x1, const ex& x2)
                        return filter(H(x1, xtemp).hold()).subs(xtemp==x2).evalf();
                }
                // ... and expand parameter notation
-               bool has_minus_one = false;
                lst m;
                for (const auto & it : morg) {
                        if (it > 1) {
@@ -3236,7 +3235,6 @@ static ex H_evalf(const ex& x1, const ex& x2)
                                        m.append(0);
                                }
                                m.append(-1);
-                               has_minus_one = true;
                        } else {
                                m.append(it);
                        }
@@ -3297,7 +3295,14 @@ static ex H_evalf(const ex& x1, const ex& x2)
                        }
                        return res.subs(xtemp == numeric(x)).evalf();
                }
-               
+
+               // check for letters (-1)
+               bool has_minus_one = false;
+               for (const auto & it : m) {
+                       if (it == -1)
+                               has_minus_one = true;
+               }
+
                // check transformations for 0.95 <= |x| < 2.0
                
                // |(1-x)/(1+x)| < 0.9 -> circular area with center=9.53+0i and radius=9.47