#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
int main(int argc, char **argv) {
    char s[32];
    double finish = argc > 1 ? strtod(argv[1], NULL) : 2.0;
    assert(finish != 0.0);
    char *format = argc > 2 ? argv[2] : "%.17g";
    double d = finish / 2.0;
    double f = d;
    int i;
    for (i = 0; i < 54; i++) {
        snprintf(s, 31, format, d);
        assert(strtod(s, NULL) == d);
        printf("%s = %a\n", s, d);
        if (d == finish) break;
        f /= 2; d += f;
    }
    exit(0);
}
