/* [Exercise 5] Bisection method */
#include <stdio.h>
#include <math.h>
#define MAX_N 10000000
int main(void) {
    int n, k;
    double x1, x2, x3;
    for( n = 1; n <= MAX_N; n *= 10 ) {
        x1 = 0;
        x2 = 10;
        for ( k = 0; k < n; k++ ) {
            x3 = (x1 + x2)/2;
            if (x3*x3-2 == 0){
                printf("Find! (n=%d)", k);
                break;
            }else if((x3*x3-2)*(x2*x2-2)>0)
                x2 = x3;
            else
                x1 = x3;
        }
        printf( "n= %d, estimated= %.10f, error= %.3e\n", n, x3, x3-sqrt(2) );
    }
    return 0;
}
