Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<boost/multiprecision/mpfr.hpp>
- #include<iostream>
- using namespace boost::multiprecision;
- using namespace std;
- constexpr unsigned DIGIT = 100'000'001;
- using my_mpfr_float = number<mpfr_float_backend<DIGIT>>;
- my_mpfr_float operator"" _big(unsigned long long n) {
- return my_mpfr_float(n);
- }
- int main() {
- my_mpfr_float a = 1_big;
- my_mpfr_float b = 1_big / sqrt(2_big);
- my_mpfr_float t = 1_big / 4_big;
- my_mpfr_float p = 1_big;
- for (my_mpfr_float n = 0_big, lim = log2(DIGIT); n < lim; n++) {
- my_mpfr_float pa = a, pb = b, pt = t, pp = p;
- a = (pa + pb) / 2_big;
- b = sqrt(pa * pb);
- t = pt - pp * pow(pa - a, 2_big);
- p = 2_big * pp;
- }
- cout << setprecision(DIGIT) << pow(a + b, 2_big) / (4_big * t) << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement