1from numpy.testing import assert_equal 2from statsmodels.compat.scipy import _next_regular 3 4 5def test_next_regular(): 6 hams = { 7 1: 1, 8 2: 2, 9 3: 3, 10 4: 4, 11 5: 5, 12 6: 6, 13 7: 8, 14 8: 8, 15 14: 15, 16 15: 15, 17 16: 16, 18 17: 18, 19 1021: 1024, 20 1536: 1536, 21 51200000: 51200000, 22 510183360: 510183360, 23 510183360 + 1: 512000000, 24 511000000: 512000000, 25 854296875: 854296875, 26 854296875 + 1: 859963392, 27 196608000000: 196608000000, 28 196608000000 + 1: 196830000000, 29 8789062500000: 8789062500000, 30 8789062500000 + 1: 8796093022208, 31 206391214080000: 206391214080000, 32 206391214080000 + 1: 206624260800000, 33 470184984576000: 470184984576000, 34 470184984576000 + 1: 470715894135000, 35 7222041363087360: 7222041363087360, 36 7222041363087360 + 1: 7230196133913600, 37 # power of 5 5**23 38 11920928955078125: 11920928955078125, 39 11920928955078125 - 1: 11920928955078125, 40 # power of 3 3**34 41 16677181699666569: 16677181699666569, 42 16677181699666569 - 1: 16677181699666569, 43 # power of 2 2**54 44 18014398509481984: 18014398509481984, 45 18014398509481984 - 1: 18014398509481984, 46 # above this, int(ceil(n)) == int(ceil(n+1)) 47 19200000000000000: 19200000000000000, 48 19200000000000000 + 1: 19221679687500000, 49 288230376151711744: 288230376151711744, 50 288230376151711744 + 1: 288325195312500000, 51 288325195312500000 - 1: 288325195312500000, 52 288325195312500000: 288325195312500000, 53 288325195312500000 + 1: 288555831593533440, 54 # power of 3 3**83 55 3 ** 83 - 1: 3 ** 83, 56 3 ** 83: 3 ** 83, 57 # power of 2 2**135 58 2 ** 135 - 1: 2 ** 135, 59 2 ** 135: 2 ** 135, 60 # power of 5 5**57 61 5 ** 57 - 1: 5 ** 57, 62 5 ** 57: 5 ** 57, 63 # http://www.drdobbs.com/228700538 64 # 2**96 * 3**1 * 5**13 65 2 ** 96 * 3 ** 1 * 5 ** 13 - 1: 2 ** 96 * 3 ** 1 * 5 ** 13, 66 2 ** 96 * 3 ** 1 * 5 ** 13: 2 ** 96 * 3 ** 1 * 5 ** 13, 67 2 ** 96 * 3 ** 1 * 5 ** 13 + 1: 2 ** 43 * 3 ** 11 * 5 ** 29, 68 # 2**36 * 3**69 * 5**7 69 2 ** 36 * 3 ** 69 * 5 ** 7 - 1: 2 ** 36 * 3 ** 69 * 5 ** 7, 70 2 ** 36 * 3 ** 69 * 5 ** 7: 2 ** 36 * 3 ** 69 * 5 ** 7, 71 2 ** 36 * 3 ** 69 * 5 ** 7 + 1: 2 ** 90 * 3 ** 32 * 5 ** 9, 72 # 2**37 * 3**44 * 5**42 73 2 ** 37 * 3 ** 44 * 5 ** 42 - 1: 2 ** 37 * 3 ** 44 * 5 ** 42, 74 2 ** 37 * 3 ** 44 * 5 ** 42: 2 ** 37 * 3 ** 44 * 5 ** 42, 75 2 ** 37 * 3 ** 44 * 5 ** 42 + 1: 2 ** 20 * 3 ** 106 * 5 ** 7, 76 } 77 78 for x, y in hams.items(): 79 assert_equal(_next_regular(x), y) 80