Пример #1
0
def test_g():
    # Test data for the g_k. See DLMF 5.11.4.
    with mp.workdps(30):
        g = [
            mp.mpf(1),
            mp.mpf(1) / 12,
            mp.mpf(1) / 288, -mp.mpf(139) / 51840, -mp.mpf(571) / 2488320,
            mp.mpf(163879) / 209018880,
            mp.mpf(5246819) / 75246796800
        ]
        mpf_assert_allclose(compute_g(7), g)
Пример #2
0
def test_alpha():
    # Test data for the alpha_k. See DLMF 8.12.14.
    with mp.workdps(30):
        alpha = [
            mp.mpf(0),
            mp.mpf(1),
            mp.mpf(1) / 3,
            mp.mpf(1) / 36, -mp.mpf(1) / 270,
            mp.mpf(1) / 4320,
            mp.mpf(1) / 17010, -mp.mpf(139) / 5443200,
            mp.mpf(1) / 204120
        ]
        mpf_assert_allclose(compute_alpha(9), alpha)
Пример #3
0
def test_g():
    # Test data for the g_k. See DLMF 5.11.4.
    with mp.workdps(30):
        g = [
            mp.mpf(1),
            mp.mpf(1) / 12,
            mp.mpf(1) / 288,
            -mp.mpf(139) / 51840,
            -mp.mpf(571) / 2488320,
            mp.mpf(163879) / 209018880,
            mp.mpf(5246819) / 75246796800,
        ]
        mpf_assert_allclose(compute_g(7), g)
Пример #4
0
def test_alpha():
    # Test data for the alpha_k. See DLMF 8.12.14.
    with mp.workdps(30):
        alpha = [
            mp.mpf(0),
            mp.mpf(1),
            mp.mpf(1) / 3,
            mp.mpf(1) / 36,
            -mp.mpf(1) / 270,
            mp.mpf(1) / 4320,
            mp.mpf(1) / 17010,
            -mp.mpf(139) / 5443200,
            mp.mpf(1) / 204120,
        ]
        mpf_assert_allclose(compute_alpha(9), alpha)
Пример #5
0
def test_d():
    # Compare the d_{k, n} to the results in appendix F of [1].
    #
    # Sources
    # -------
    # [1] DiDonato and Morris, Computation of the Incomplete Gamma
    #     Function Ratios and their Inverse, ACM Transactions on
    #     Mathematical Software, 1986.

    with mp.workdps(50):
        dataset = [
            (0, 0, -mp.mpf("0.333333333333333333333333333333")),
            (0, 12, mp.mpf("0.102618097842403080425739573227e-7")),
            (1, 0, -mp.mpf("0.185185185185185185185185185185e-2")),
            (1, 12, mp.mpf("0.119516285997781473243076536700e-7")),
            (2, 0, mp.mpf("0.413359788359788359788359788360e-2")),
            (2, 12, -mp.mpf("0.140925299108675210532930244154e-7")),
            (3, 0, mp.mpf("0.649434156378600823045267489712e-3")),
            (3, 12, -mp.mpf("0.191111684859736540606728140873e-7")),
            (4, 0, -mp.mpf("0.861888290916711698604702719929e-3")),
            (4, 12, mp.mpf("0.288658297427087836297341274604e-7")),
            (5, 0, -mp.mpf("0.336798553366358150308767592718e-3")),
            (5, 12, mp.mpf("0.482409670378941807563762631739e-7")),
            (6, 0, mp.mpf("0.531307936463992223165748542978e-3")),
            (6, 12, -mp.mpf("0.882860074633048352505085243179e-7")),
            (7, 0, mp.mpf("0.344367606892377671254279625109e-3")),
            (7, 12, -mp.mpf("0.175629733590604619378669693914e-6")),
            (8, 0, -mp.mpf("0.652623918595309418922034919727e-3")),
            (8, 12, mp.mpf("0.377358774161109793380344937299e-6")),
            (9, 0, -mp.mpf("0.596761290192746250124390067179e-3")),
            (9, 12, mp.mpf("0.870823417786464116761231237189e-6")),
        ]
        d = compute_d(10, 13)
        res = []
        for k, n, std in dataset:
            res.append(d[k][n])
        std = map(lambda x: x[2], dataset)
        mpf_assert_allclose(res, std)
Пример #6
0
def test_d():
    # Compare the d_{k, n} to the results in appendix F of [1].
    #
    # Sources
    # -------
    # [1] DiDonato and Morris, Computation of the Incomplete Gamma
    #     Function Ratios and their Inverse, ACM Transactions on
    #     Mathematical Software, 1986.

    with mp.workdps(50):
        dataset = [(0, 0, -mp.mpf('0.333333333333333333333333333333')),
                   (0, 12, mp.mpf('0.102618097842403080425739573227e-7')),
                   (1, 0, -mp.mpf('0.185185185185185185185185185185e-2')),
                   (1, 12, mp.mpf('0.119516285997781473243076536700e-7')),
                   (2, 0, mp.mpf('0.413359788359788359788359788360e-2')),
                   (2, 12, -mp.mpf('0.140925299108675210532930244154e-7')),
                   (3, 0, mp.mpf('0.649434156378600823045267489712e-3')),
                   (3, 12, -mp.mpf('0.191111684859736540606728140873e-7')),
                   (4, 0, -mp.mpf('0.861888290916711698604702719929e-3')),
                   (4, 12, mp.mpf('0.288658297427087836297341274604e-7')),
                   (5, 0, -mp.mpf('0.336798553366358150308767592718e-3')),
                   (5, 12, mp.mpf('0.482409670378941807563762631739e-7')),
                   (6, 0, mp.mpf('0.531307936463992223165748542978e-3')),
                   (6, 12, -mp.mpf('0.882860074633048352505085243179e-7')),
                   (7, 0, mp.mpf('0.344367606892377671254279625109e-3')),
                   (7, 12, -mp.mpf('0.175629733590604619378669693914e-6')),
                   (8, 0, -mp.mpf('0.652623918595309418922034919727e-3')),
                   (8, 12, mp.mpf('0.377358774161109793380344937299e-6')),
                   (9, 0, -mp.mpf('0.596761290192746250124390067179e-3')),
                   (9, 12, mp.mpf('0.870823417786464116761231237189e-6'))]
        d = compute_d(10, 13)
        res = []
        for k, n, std in dataset:
            res.append(d[k][n])
        std = map(lambda x: x[2], dataset)
        mpf_assert_allclose(res, std)
 def test_sin(self):
     with mp.workdps(30):
         sincoeffs = mp.taylor(mp.sin, 0, 10)
         asincoeffs = mp.taylor(mp.asin, 0, 10)
         invsincoeffs = utils.lagrange_inversion(sincoeffs)
         utils.mpf_assert_allclose(invsincoeffs, asincoeffs, atol=1e-30)
 def test_log(self):
     with mp.workdps(30):
         logcoeffs = mp.taylor(lambda x: mp.log(1 + x), 0, 10)
         expcoeffs = mp.taylor(lambda x: mp.exp(x) - 1, 0, 10)
         invlogcoeffs = utils.lagrange_inversion(logcoeffs)
         utils.mpf_assert_allclose(invlogcoeffs, expcoeffs)
Пример #9
0
 def test_sin(self):
     with mp.workdps(30):
         sincoeffs = mp.taylor(mp.sin, 0, 10)
         asincoeffs = mp.taylor(mp.asin, 0, 10)
         invsincoeffs = utils.lagrange_inversion(sincoeffs)
         utils.mpf_assert_allclose(invsincoeffs, asincoeffs, atol=1e-30)
Пример #10
0
 def test_log(self):
     with mp.workdps(30):
         logcoeffs = mp.taylor(lambda x: mp.log(1 + x), 0, 10)
         expcoeffs = mp.taylor(lambda x: mp.exp(x) - 1, 0, 10)
         invlogcoeffs = utils.lagrange_inversion(logcoeffs)
         utils.mpf_assert_allclose(invlogcoeffs, expcoeffs)