12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # gh-14777 regression tests
- # Test stdtr and stdtrit with infinite df and large values of df
- import numpy as np
- from numpy.testing import assert_allclose, assert_equal
- from scipy.special import stdtr, stdtrit, ndtr, ndtri
- def test_stdtr_vs_R_large_df():
- df = [1e10, 1e12, 1e120, np.inf]
- t = 1.
- res = stdtr(df, t)
- # R Code:
- # options(digits=20)
- # pt(1., c(1e10, 1e12, 1e120, Inf))
- res_R = [0.84134474605644460343,
- 0.84134474606842180044,
- 0.84134474606854281475,
- 0.84134474606854292578]
- assert_allclose(res, res_R, rtol=2e-15)
- # last value should also agree with ndtr
- assert_equal(res[3], ndtr(1.))
- def test_stdtrit_vs_R_large_df():
- df = [1e10, 1e12, 1e120, np.inf]
- p = 0.1
- res = stdtrit(df, p)
- # R Code:
- # options(digits=20)
- # qt(0.1, c(1e10, 1e12, 1e120, Inf))
- res_R = [-1.2815515656292593150,
- -1.2815515655454472466,
- -1.2815515655446008125,
- -1.2815515655446008125]
- assert_allclose(res, res_R, rtol=1e-15)
- # last value should also agree with ndtri
- assert_equal(res[3], ndtri(0.1))
- def test_stdtr_stdtri_invalid():
- # a mix of large and inf df with t/p equal to nan
- df = [1e10, 1e12, 1e120, np.inf]
- x = np.nan
- res1 = stdtr(df, x)
- res2 = stdtrit(df, x)
- res_ex = 4*[np.nan]
- assert_equal(res1, res_ex)
- assert_equal(res2, res_ex)
|