Almkvist-Giullera formula for pi: Difference between revisions

Content added Content deleted
(Added C++ solution)
m (Minor edit to C++ code)
Line 198: Line 198:
<< '\n';
<< '\n';


big_float epsilon(pow(big_float(10), -70));
rational sum = 0, prev = 0;
big_float prev = 0, pi = 0;
rational prec(1, pow(big_int(10), 70));
rational sum = 0;
for (int n = 0;; ++n) {
for (int n = 0;; ++n) {
rational term(almkvist_giullera(n), pow(big_int(10), 6 * n + 3));
rational term(almkvist_giullera(n), pow(big_int(10), 6 * n + 3));
sum += term;
sum += term;
if (abs(sum - prev) < prec)
pi = sqrt(big_float(1 / sum));
if (abs(pi - prev) < epsilon)
break;
break;
prev = sum;
prev = pi;
}
}
std::cout << "\nPi to 70 decimal places is:\n"
big_float pi2(1 / sum);
std::cout << "\nPi to 70 decimal places is:\n";
<< std::fixed << std::setprecision(70) << pi << '\n';
std::cout << std::fixed << std::setprecision(70) << sqrt(pi2) << '\n';
}</lang>
}</lang>