#include <stdio.h>
#include <math.h>

#define EPS 1e-5

double f(double x) {
    return x*x - 1 - sin(x);
}

int main() {
    double a1 = -1.0, b1 = 0.0;
    double a2 = 1.0,  b2 = 2.0;

    double mid1, mid2;
    int iter = 0;

    printf("Iter |   [-1,0] interval                  |   [1,2] interval\n");
    printf("     | a        b        mid      f(mid)  | a        b        mid      f(mid)\n");

    while (1) {
        iter++;

        mid1 = (a1 + b1) / 2.0;
        mid2 = (a2 + b2) / 2.0;

        printf("%2d   | %.6f %.6f %.6f %.6f | %.6f %.6f %.6f %.6f\n",
               iter,
               a1, b1, mid1, f(mid1),
               a2, b2, mid2, f(mid2));

        // 収束チェック（両方満たしたら終了）
        if (fabs(f(mid1)) < EPS && fabs(f(mid2)) < EPS) {
            break;
        }

        // 区間1更新
        if (f(a1) * f(mid1) < 0) {
            b1 = mid1;
        } else {
            a1 = mid1;
        }

        // 区間2更新
        if (f(a2) * f(mid2) < 0) {
            b2 = mid2;
        } else {
            a2 = mid2;
        }
    }

    printf("\nFinal Results:\n");
    printf("Root in [-1,0] ≈ %.6f\n", mid1);
    printf("Root in [1,2] ≈ %.6f\n", mid2);

    return 0;
}
