#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
// Funkcja f(x) = sqrt(1 - x^2)
long double f(long double x) {
return sqrt(1.0L - x * x);
}
int main() {
const long double a = 0.0L;
const long double b = 1.0L;
const long long n = 10000000; // liczba podziałów (można zwiększyć dla większej dokładności)
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 = 4.0L * h * suma_prostokaty;
// ===== 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 = 4.0L * h * suma_trapezy;
// Ustawienie dokładności do 20 miejsc po przecinku
cout << fixed << setprecision(20);
cout << "Przyblizona wartosc liczby pi (metoda prostokatow): "
<< pi_prostokaty << endl;
cout << "Przyblizona wartosc liczby pi (metoda trapezow): "
<< pi_trapezy << endl;
return 0;
}