[Scipy-svn] r6969 - in trunk/scipy/special: cephes tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Sun Nov 28 12:46:31 EST 2010
Author: ptvirtan
Date: 2010-11-28 11:46:31 -0600 (Sun, 28 Nov 2010)
New Revision: 6969
Modified:
trunk/scipy/special/cephes/hyp2f1.c
trunk/scipy/special/tests/test_mpmath.py
trunk/scipy/special/tests/test_orthogonal_eval.py
Log:
BUG: special: fix mistaken divergence test in hyp2f1 for cases where the series terminates (fixes #1298)
Modified: trunk/scipy/special/cephes/hyp2f1.c
===================================================================
--- trunk/scipy/special/cephes/hyp2f1.c 2010-11-28 15:44:33 UTC (rev 6968)
+++ trunk/scipy/special/cephes/hyp2f1.c 2010-11-28 17:46:31 UTC (rev 6969)
@@ -137,7 +137,7 @@
if (d <= -1 && !(fabs(d-id) > EPS && s < 0) && !(neg_int_a || neg_int_b)) {
return pow(s, d) * hyp2f1(c - a, c - b, c, x);
}
- if (d <= 0 && x == 1)
+ if (d <= 0 && x == 1 && !(neg_int_a || neg_int_b))
goto hypdiv;
if (ax < 1.0 || x == -1.0) {
Modified: trunk/scipy/special/tests/test_mpmath.py
===================================================================
--- trunk/scipy/special/tests/test_mpmath.py 2010-11-28 15:44:33 UTC (rev 6968)
+++ trunk/scipy/special/tests/test_mpmath.py 2010-11-28 17:46:31 UTC (rev 6969)
@@ -83,6 +83,10 @@
(-8, 18.016500331508873, 10.805295997850628, 0.90875647507000001),
(-10,900,-10.5,0.99),
(-10,900,10.5,0.99),
+ (-1,2,1,1.0),
+ (-1,2,1,-1.0),
+ (-3,13,5,1.0),
+ (-3,13,5,-1.0),
]
dataset = [p + (float(mpmath.hyp2f1(*p)),) for p in pts]
dataset = np.array(dataset, dtype=np.float_)
Modified: trunk/scipy/special/tests/test_orthogonal_eval.py
===================================================================
--- trunk/scipy/special/tests/test_orthogonal_eval.py 2010-11-28 15:44:33 UTC (rev 6968)
+++ trunk/scipy/special/tests/test_orthogonal_eval.py 2010-11-28 17:46:31 UTC (rev 6969)
@@ -47,6 +47,8 @@
else:
p = (n,)
x = x_range[0] + (x_range[1] - x_range[0])*np.random.rand(nx)
+ x[0] = x_range[0] # always include domain start point
+ x[1] = x_range[1] # always include domain end point
poly = np.poly1d(cls(*p))
z = np.c_[np.tile(p, (nx,1)), x, poly(x)]
dataset.append(z)
More information about the Scipy-svn
mailing list