12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- from __future__ import division, print_function, absolute_import
- import numpy as np
- from numpy.testing import assert_allclose
- import scipy.special as sc
- from scipy.special._testutils import FuncData
- def test_line():
- # Test on the line a = x where a simpler asymptotic expansion
- # (analog of DLMF 8.12.15) is available.
- def gammainc_line(x):
- c = np.array([-1/3, -1/540, 25/6048, 101/155520,
- -3184811/3695155200, -2745493/8151736420])
- res = 0
- xfac = 1
- for ck in c:
- res -= ck*xfac
- xfac /= x
- res /= np.sqrt(2*np.pi*x)
- res += 0.5
- return res
- x = np.logspace(np.log10(25), 300, 500)
- a = x.copy()
- dataset = np.vstack((a, x, gammainc_line(x))).T
- FuncData(sc.gammainc, dataset, (0, 1), 2, rtol=1e-11).check()
- def test_gammainc_roundtrip():
- a = np.logspace(-5, 10, 100)
- x = np.logspace(-5, 10, 100)
- y = sc.gammaincinv(a, sc.gammainc(a, x))
- assert_allclose(x, y, rtol=1e-10)
- def test_gammaincc_roundtrip():
- a = np.logspace(-5, 10, 100)
- x = np.logspace(-5, 10, 100)
- y = sc.gammainccinv(a, sc.gammaincc(a, x))
- assert_allclose(x, y, rtol=1e-14)
|