#include
#include
#include
using namespace std;
double pi(double);
int main(void) {
for (;;) {
double epsilon;
cout << "Enter epsilon(-999 to stop): ";
cin >> epsilon;
if (epsilon == -999) break;
cout << "pi = " << setprecision(-floor(log10(epsilon))) << pi(epsilon) << endl;
}
return 0;
}
double pi(double epsilon) {
double pi_2, new_pi_2 = 1.0;
int i = 1;
do {
double k = 1.0;
int j;
pi_2 = new_pi_2;
for (j = 1; j <= i; j++) {
k = k * double(j) / (j * 2 + 1);
}
i++;
new_pi_2 += k;
} while ((new_pi_2 - pi_2) * 2 > epsilon);
return new_pi_2 * 2;
}