#include <stdio.h>
#include <math.h>
double largestCfor(double A)
{
double C = nextafter(1.0, 0);
while (C*A >= A)
C = nextafter(C, 0);
return C;
}
int main() {
double C = 1;
for (double i = 0x1p-1022; isfinite(i); i *= 2) // loop through all possible exponents
{
double c = largestCfor(i);
if (c < C) C = c;
}
printf("nextafter(1.0, 0) = %.30f\n", nextafter
(1.0, 0));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+Cgpkb3VibGUgbGFyZ2VzdENmb3IoZG91YmxlIEEpCnsKICAgIGRvdWJsZSBDID0gbmV4dGFmdGVyKDEuMCwgMCk7CiAgICB3aGlsZSAoQypBID49IEEpCiAgICAgICAgQyA9IG5leHRhZnRlcihDLCAwKTsKICAgIHJldHVybiBDOwp9CgppbnQgbWFpbigpIHsKCWRvdWJsZSBDID0gMTsKCWZvciAoZG91YmxlIGkgPSAweDFwLTEwMjI7IGlzZmluaXRlKGkpOyBpICo9IDIpIC8vIGxvb3AgdGhyb3VnaCBhbGwgcG9zc2libGUgZXhwb25lbnRzCgl7CgkgICAgZG91YmxlIGMgPSBsYXJnZXN0Q2ZvcihpKTsKCSAgICBpZiAoYyA8IEMpIEMgPSBjOwoJfQoJCglwcmludGYoIkMgICAgICAgICAgICAgICAgID0gJS4zMGZcbiIsIEMpOwoJcHJpbnRmKCJuZXh0YWZ0ZXIoMS4wLCAwKSA9ICUuMzBmXG4iLCBuZXh0YWZ0ZXIoMS4wLCAwKSk7CgkKCXJldHVybiAwOwp9