#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
void my_pi_func(int term);
int main()
{
int term;
cout << fixed << setprecision(12); // set digits after decimal to 12
while (cin >> term){
my_pi_func(term);
}
return 0;
}
void my_pi_func(int term)
{
if (term <= 0){
cout << "\n\nNegative value or 0 read\n\n" << endl;
return;
}
double leibniz = 0.0; // pi value calculated from Leibniz
int counter = 0; // starting value
double eulerall = 0.0; // value calculated from Euler (all integers)
double eulerodd = 0.0; // value calculated from Euler (odds)
double eulerallans = 0.0; // pi value calculated from Euler series (all integers)
double euleroddans = 0.0; // pi value calculated from Euler series (odd integers)
while(term > counter){
leibniz = 4*(pow(-1, counter)) / (2*counter+1) + leibniz;
eulerall = (1/pow(counter+1,2)) + eulerall;
eulerodd = (pow(-1, counter)) / (pow(2*counter + 1, 3)) + eulerodd;
counter++;
eulerallans = sqrt(eulerall*6);
euleroddans = pow(32*eulerodd, 1.0/3.0);
}
cout << right << setw(14) << "# TERMS" << setw(15) << "LEIBINZ" << setw(15)
<< "EULER-ALL" << setw(15) << "EULER-ODD" << endl;
cout << right << setw(14) << term << " " << leibniz << " " << eulerallans
<< " " << euleroddans <<endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBteV9waV9mdW5jKGludCB0ZXJtKTsKCmludCBtYWluKCkKewogICAgaW50IHRlcm07CiAgICAKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDEyKTsgLy8gc2V0IGRpZ2l0cyBhZnRlciBkZWNpbWFsIHRvIDEyICAgICAgICAgCiAgICAKICAgIHdoaWxlIChjaW4gPj4gdGVybSl7CiAgICAgICAgbXlfcGlfZnVuYyh0ZXJtKTsKICAgIH0KCiAgICByZXR1cm4gMDsKCn0KCnZvaWQgbXlfcGlfZnVuYyhpbnQgdGVybSkKewogICAgaWYgKHRlcm0gPD0gMCl7CiAgICAgICAgY291dCA8PCAiXG5cbk5lZ2F0aXZlIHZhbHVlIG9yIDAgcmVhZFxuXG4iIDw8IGVuZGw7CgkJcmV0dXJuOwogICAgfQoKICAgIGRvdWJsZSBsZWlibml6ID0gMC4wOyAvLyBwaSB2YWx1ZSBjYWxjdWxhdGVkIGZyb20gTGVpYm5peiAgICAgICAgICAgICAgICAgICAgIAogICAgaW50IGNvdW50ZXIgPSAwOyAvLyBzdGFydGluZyB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgZG91YmxlIGV1bGVyYWxsID0gMC4wOyAvLyB2YWx1ZSBjYWxjdWxhdGVkIGZyb20gRXVsZXIgKGFsbCBpbnRlZ2VycykgICAgICAgICAgCiAgICBkb3VibGUgZXVsZXJvZGQgPSAwLjA7IC8vIHZhbHVlIGNhbGN1bGF0ZWQgZnJvbSBFdWxlciAob2RkcykgICAgICAgICAgICAgICAgICAKICAgIGRvdWJsZSBldWxlcmFsbGFucyA9IDAuMDsgLy8gcGkgdmFsdWUgY2FsY3VsYXRlZCBmcm9tIEV1bGVyIHNlcmllcyAoYWxsIGludGVnZXJzKSAgIAogICAgZG91YmxlIGV1bGVyb2RkYW5zID0gMC4wOyAvLyBwaSB2YWx1ZSBjYWxjdWxhdGVkIGZyb20gRXVsZXIgc2VyaWVzIChvZGQgaW50ZWdlcnMpCiAgICAKICAgIHdoaWxlKHRlcm0gPiBjb3VudGVyKXsKICAgIGxlaWJuaXogPSA0Kihwb3coLTEsIGNvdW50ZXIpKSAvICgyKmNvdW50ZXIrMSkgKyBsZWlibml6OwogICAgZXVsZXJhbGwgPSAoMS9wb3coY291bnRlcisxLDIpKSArIGV1bGVyYWxsOwogICAgZXVsZXJvZGQgPSAocG93KC0xLCBjb3VudGVyKSkgLyAocG93KDIqY291bnRlciArIDEsIDMpKSArIGV1bGVyb2RkOwogICAgY291bnRlcisrOwogICAgZXVsZXJhbGxhbnMgPSBzcXJ0KGV1bGVyYWxsKjYpOwogICAgZXVsZXJvZGRhbnMgPSAgcG93KDMyKmV1bGVyb2RkLCAxLjAvMy4wKTsKICAgIH0KICAgIGNvdXQgPDwgcmlnaHQgPDwgc2V0dygxNCkgPDwgIiMgVEVSTVMiIDw8IHNldHcoMTUpIDw8ICJMRUlCSU5aIiA8PCBzZXR3KDE1KQogICAgPDwgIkVVTEVSLUFMTCIgPDwgc2V0dygxNSkgPDwgIkVVTEVSLU9ERCIgPDwgZW5kbDsKICAgIGNvdXQgPDwgcmlnaHQgPDwgc2V0dygxNCkgPDwgdGVybSA8PCAiICIgPDwgbGVpYm5peiA8PCAiICIgPDwgZXVsZXJhbGxhbnMgCiAgICA8PCAiICIgPDwgZXVsZXJvZGRhbnMgPDxlbmRsOwogICAgCgp9