#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
// Funkcja podcałkowa
long double f(long double x) {
return sqrt(1.0L - x * x);
}
int main() {
const long double a = -1.0L;
const long double b = 1.0L;
const long long n = 10000000; // liczba podziałów (duża dla wysokiej dokładności)
const long double h = (b - a) / n;
long double suma_prostokaty = 0.0L;
long double suma_trapezy = 0.0L;
// ===== Metoda prostokątów (środków przedziałów) =====
for (long long i = 0; i < n; i++) {
long double x = a + (i + 0.5L) * h;
suma_prostokaty += f(x);
}
long double pi_prostokaty = 2.0L * suma_prostokaty * h;
// ===== Metoda trapezów =====
suma_trapezy = (f(a) + f(b)) / 2.0L;
for (long long i = 1; i < n; i++) {
long double x = a + i * h;
suma_trapezy += f(x);
}
long double pi_trapezy = 2.0L * suma_trapezy * h;
// Ustawienie dokładności do 20 miejsc po przecinku
cout << fixed << setprecision(20);
cout << "PI (metoda prostokatow): " << pi_prostokaty << endl;
cout << "PI (metoda trapezow): " << pi_trapezy << endl;
return 0;
}