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

// 関数 y = sqrt(x)
double f(double x) {
    return sqrt(x);
}

int main() {
    double a = 0.0, b = 1.0; // 積分区間 [0, 1]
    int n;                  // 分割数
    double true_value = 2.0 / 3.0; // 面積の真値 (解析解)
    
    printf("分割数\t近似値\t\t誤差\n");
    for (n = 2; n <= 100; n *= 2) { // 分割数を増やして誤差を調べる
        double h = (b - a) / n;     // 各台形の幅
        double approx = 0.0;

        // 台形近似法の計算
        for (int i = 0; i < n; i++) {
            double x1 = a + i * h;
            double x2 = a + (i + 1) * h;
            approx += (f(x1) + f(x2)) * h / 2.0;
        }

        // 誤差を計算
        double error = fabs(true_value - approx);

        // 結果を出力
        printf("%d\t%.6f\t%.6f\n", n, approx, error);
    }

    return 0;
}
