|
| 1 | +import pytest |
| 2 | + |
1 | 3 | from mpmath import (altzeta, apery, barnesg, bell, bernfrac, bernoulli, |
2 | 4 | bernpoly, beta, binomial, catalan, digamma, e, euler, |
3 | 5 | eulerpoly, fac, fac2, factorial, fadd, ff, findroot, fp, |
|
11 | 13 | def test_zeta_int_bug(): |
12 | 14 | assert mpf_zeta_int(0, 10) == from_float(-0.5) |
13 | 15 |
|
14 | | -def test_bernoulli(): |
15 | | - assert bernfrac(0) == (1,1) |
16 | | - assert bernfrac(1) == (-1,2) |
17 | | - assert bernfrac(2) == (1,6) |
18 | | - assert bernfrac(3) == (0,1) |
19 | | - assert bernfrac(4) == (-1,30) |
20 | | - assert bernfrac(5) == (0,1) |
21 | | - assert bernfrac(6) == (1,42) |
22 | | - assert bernfrac(8) == (-1,30) |
23 | | - assert bernfrac(10) == (5,66) |
24 | | - assert bernfrac(12) == (-691,2730) |
25 | | - assert bernfrac(18) == (43867,798) |
26 | | - p, q = bernfrac(228) |
| 16 | +@pytest.mark.parametrize('plus', [True, False]) |
| 17 | +def test_bernoulli(plus): |
| 18 | + assert bernfrac(0, plus) == (1,1) |
| 19 | + assert bernfrac(1, plus) == (1,2) if plus else (-1,2) |
| 20 | + assert bernfrac(2, plus) == (1,6) |
| 21 | + assert bernfrac(3, plus) == (0,1) |
| 22 | + assert bernfrac(4, plus) == (-1,30) |
| 23 | + assert bernfrac(5, plus) == (0,1) |
| 24 | + assert bernfrac(6, plus) == (1,42) |
| 25 | + assert bernfrac(8, plus) == (-1,30) |
| 26 | + assert bernfrac(10, plus) == (5,66) |
| 27 | + assert bernfrac(12, plus) == (-691,2730) |
| 28 | + assert bernfrac(18, plus) == (43867,798) |
| 29 | + p, q = bernfrac(228, plus) |
27 | 30 | assert p % 10**10 == 164918161 |
28 | 31 | assert q == 625170 |
29 | | - p, q = bernfrac(1000) |
| 32 | + p, q = bernfrac(1000, plus) |
30 | 33 | assert p % 10**10 == 7950421099 |
31 | 34 | assert q == 342999030 |
32 | 35 | mp.dps = 15 |
33 | | - assert bernoulli(0) == 1 |
34 | | - assert bernoulli(1) == -0.5 |
35 | | - assert bernoulli(2).ae(1./6) |
36 | | - assert bernoulli(3) == 0 |
37 | | - assert bernoulli(4).ae(-1./30) |
38 | | - assert bernoulli(5) == 0 |
39 | | - assert bernoulli(6).ae(1./42) |
40 | | - assert str(bernoulli(10)) == '0.0757575757575758' |
41 | | - assert str(bernoulli(234)) == '7.62772793964344e+267' |
42 | | - assert str(bernoulli(10**5)) == '-5.82229431461335e+376755' |
43 | | - assert str(bernoulli(10**8+2)) == '1.19570355039953e+676752584' |
| 36 | + assert bernoulli(0, plus) == 1 |
| 37 | + assert bernoulli(1, plus) == 0.5 if plus else -0.5 |
| 38 | + assert bernoulli(2, plus).ae(1./6) |
| 39 | + assert bernoulli(3, plus) == 0 |
| 40 | + assert bernoulli(4, plus).ae(-1./30) |
| 41 | + assert bernoulli(5, plus) == 0 |
| 42 | + assert bernoulli(6, plus).ae(1./42) |
| 43 | + assert str(bernoulli(10, plus)) == '0.0757575757575758' |
| 44 | + assert str(bernoulli(234, plus)) == '7.62772793964344e+267' |
| 45 | + assert str(bernoulli(10**5, plus)) == '-5.82229431461335e+376755' |
| 46 | + assert str(bernoulli(10**8+2, plus)) == '1.19570355039953e+676752584' |
44 | 47 |
|
45 | 48 | mp.dps = 50 |
46 | | - assert str(bernoulli(10)) == '0.075757575757575757575757575757575757575757575757576' |
47 | | - assert str(bernoulli(234)) == '7.6277279396434392486994969020496121553385863373331e+267' |
48 | | - assert str(bernoulli(10**5)) == '-5.8222943146133508236497045360612887555320691004308e+376755' |
49 | | - assert str(bernoulli(10**8+2)) == '1.1957035503995297272263047884604346914602088317782e+676752584' |
| 49 | + assert str(bernoulli(10, plus)) == '0.075757575757575757575757575757575757575757575757576' |
| 50 | + assert str(bernoulli(234, plus)) == '7.6277279396434392486994969020496121553385863373331e+267' |
| 51 | + assert str(bernoulli(10**5, plus)) == '-5.8222943146133508236497045360612887555320691004308e+376755' |
| 52 | + assert str(bernoulli(10**8+2, plus)) == '1.1957035503995297272263047884604346914602088317782e+676752584' |
50 | 53 |
|
51 | 54 | mp.dps = 1000 |
52 | | - assert bernoulli(10).ae(mpf(5)/66) |
| 55 | + assert bernoulli(10, plus).ae(mpf(5)/66) |
53 | 56 |
|
54 | 57 | mp.dps = 50000 |
55 | | - assert bernoulli(10).ae(mpf(5)/66) |
| 58 | + assert bernoulli(10, plus).ae(mpf(5)/66) |
56 | 59 |
|
57 | 60 | mp.dps = 15 |
58 | 61 |
|
|
0 commit comments