Fixed bug in binomial(). binomial(n,0) erroneously returned 0.
authorJens Vollinga <jensv@balin.nikhef.nl>
Thu, 8 Jan 2009 09:26:50 +0000 (10:26 +0100)
committerJens Vollinga <jensv@balin.nikhef.nl>
Thu, 8 Jan 2009 09:26:50 +0000 (10:26 +0100)
check/exam_inifcns.cpp
ginac/inifcns.cpp

index b86b470..7d8cb97 100644 (file)
@@ -215,6 +215,20 @@ static unsigned inifcns_consist_zeta()
        return result;
 }
 
+static unsigned inifcns_consist_various()
+{
+       unsigned result = 0;
+       symbol n;
+       ex e;
+       
+       if ( binomial(n, 0) != 1 ) {
+               clog << "ERROR: binomial(n,0) != 1" << endl;            
+               ++result;
+       }
+       
+       return result;
+}
+
 unsigned exam_inifcns()
 {
        unsigned result = 0;
@@ -225,6 +239,7 @@ unsigned exam_inifcns()
        result += inifcns_consist_gamma();  cout << '.' << flush;
        result += inifcns_consist_psi();  cout << '.' << flush;
        result += inifcns_consist_zeta();  cout << '.' << flush;
+       result += inifcns_consist_various();  cout << '.' << flush;
        
        return result;
 }
index 17a080c..fa998b2 100644 (file)
@@ -759,7 +759,7 @@ static ex binomial_sym(const ex & x, const numeric & y)
        if (y.is_integer()) {
                if (y.is_nonneg_integer()) {
                        const unsigned N = y.to_int();
-                       if (N == 0) return _ex0;
+                       if (N == 0) return _ex1;
                        if (N == 1) return x;
                        ex t = x.expand();
                        for (unsigned i = 2; i <= N; ++i)