criando constantes matemáticas de precisão variável usando o Boost mpfr_float, como pi ou e

Estou usando o Boost.Multiprecision para wrappers em torno do back-end mpfr e estou tendo problemas para criar pi (ee ou qualquer outra constante matemática) com a precisão desejada. Eu sinto que o que eu quero fazer deve ser possível, devido ao uso deMatemática para constantes com umpágina de tutorial para Boost.Multiprecision. No tutorial, eles usam números de precisão fixa de tipos comocpp_dec_float_50 - Eu quero fazer isso com variável_precisãompfr_float. Confira o seguinte código:

#include <boost/multiprecision/mpfr.hpp>
#include <boost/math/constants/constants.hpp>
#include <iostream>

...
int main() {
    boost::multiprecision::mpfr_float::default_precision(1000);
    boost::multiprecision::mpfr_float pi = boost::math::constants::pi<boost::multiprecision::mpfr_float>();
    std::cout << std::fixed;
    std::cout.precision(1000);
    std::cout << pi.precision() << " " << pi << std::endl;
}

O resultado é um número,pi, que tem precisão 1000, mas possui apenas ~ 165 dígitos de pi, conforme evidenciado pelo resultado das instruções de saída, que confirmam que meupi é de precisão 1000 e imprime cerca de 165 dígitos corretos e ~ 835 zeros. isso está claramente errado.

é possível fazer um boost :: multiprecision :: mpfr_float com alta precisão preenchido com constantes de boost :: math :: constants?

Note que eunecessidade para usar um tipo de precisão variável e que outros tipos de precisão alta, mas fixa não são uma opção. Devo poder alterar a precisão rapidamente em tempo de execução.

questionAnswers(1)

yourAnswerToTheQuestion