Как мне использовать функцию mpfr :: mpfr_fac_ui? - PullRequest
0 голосов
/ 26 мая 2019

Я попытался найти пример использования mpfr::mpfr_fac_ui через Интернет, но мне не удалось, поэтому я решил спросить здесь.

У меня есть свой собственный итеративный факториал

boost::multiprecision::mpfr_float factorial(int start, int end)
{
    boost::multiprecision::mpfr_float fact = 1;

    for (; start <= end; ++start)
        fact *= start;

    return fact;
}

но я хочу попробовать встроенный factorial .

Я не знаю, что я делаю неправильно, потому что, когда я проверяю это так,

mpfr_t test;
mpfr_init2(test, 1000);

std::cout << mpfr_fac_ui(test, 5, MPFR_RNDN) << std::endl;
std::cout << factorial(1, 5) << std::endl;

mpfr_fac_ui не возвращает никаких ошибок (возвращает 0), а test равно 0, в то время как должно быть 120.

Я что-то делаю не так или я что-то упускаю?

1 Ответ

1 голос
/ 27 мая 2019

В C я получаю 120, как и ожидалось, с:

#include <stdio.h>
#include <mpfr.h>

int main (void)
{
  mpfr_t test;
  mpfr_init2 (test, 1000);
  mpfr_fac_ui (test, 5, MPFR_RNDN);
  mpfr_printf ("%Rg\n", test);
  mpfr_clear (test);
  return 0;
}

В вашей программе вы не показываете, как вы печатаете значение test.Все, что вы делаете, это печатаете возвращаемое значение mpfr_fac_ui, которое равно 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...