[Scipy-svn] r6553 - branches/0.8.x/scipy/special/tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Sun Jun 20 19:50:09 EDT 2010
Author: ptvirtan
Date: 2010-06-20 18:50:09 -0500 (Sun, 20 Jun 2010)
New Revision: 6553
Modified:
branches/0.8.x/scipy/special/tests/test_mpmath.py
Log:
TST: special: add test for complex erf
(cherry picked from commits r6549, r6550)
Modified: branches/0.8.x/scipy/special/tests/test_mpmath.py
===================================================================
--- branches/0.8.x/scipy/special/tests/test_mpmath.py 2010-06-20 23:49:56 UTC (rev 6552)
+++ branches/0.8.x/scipy/special/tests/test_mpmath.py 2010-06-20 23:50:09 UTC (rev 6553)
@@ -42,7 +42,7 @@
for r in np.logspace(-99, 2, 10):
for p in np.linspace(0, 2*np.pi, 30):
z = r*np.exp(1j*p)
- dataset.append((z, mpmath.ei(z)))
+ dataset.append((z, complex(mpmath.ei(z))))
dataset = np.array(dataset, dtype=np.complex_)
FuncData(sc.expi, dataset, 0, 1).check()
@@ -152,3 +152,24 @@
ds[4] = float(mpmath.hyp2f1(*tuple(ds[:4])))
FuncData(sc.hyp2f1, dataset, (0,1,2,3), 4, rtol=1e-9).check()
+
+#------------------------------------------------------------------------------
+# erf (complex)
+#------------------------------------------------------------------------------
+
+ at mpmath_check('0.14')
+def test_erf_complex():
+ # need to increase mpmath precision for this test
+ old_dps, old_prec = mpmath.mp.dps, mpmath.mp.prec
+ try:
+ mpmath.mp.dps = 70
+ x1, y1 = np.meshgrid(np.linspace(-10, 1, 11), np.linspace(-10, 1, 11))
+ x2, y2 = np.meshgrid(np.logspace(-10, .8, 11), np.logspace(-10, .8, 11))
+ points = np.r_[x1.ravel(),x2.ravel()] + 1j*np.r_[y1.ravel(),y2.ravel()]
+
+ # note that the global accuracy of our complex erf algorithm is limited
+ # roughly to 2e-8
+ assert_func_equal(sc.erf, lambda x: complex(mpmath.erf(x)), points,
+ vectorized=False, rtol=2e-8)
+ finally:
+ mpmath.mp.dps, mpmath.mp.prec = old_dps, old_prec
More information about the Scipy-svn
mailing list