我应该如何使用mpfr :: mpfr_fac_ui函数

How am I suppose to use mpfr::mpfr_fac_ui function?

本文关键字:mpfr ui 函数 fac 我应该 何使用      更新时间:2023-10-16

我尝试找到一个如何通过Internet使用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;
}

,但我想尝试内置阶乘。

我不知道我在做什么错,因为当我像这样测试时

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。

我做错了什么还是我缺少什么?

在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 ("%Rgn", test);
  mpfr_clear (test);
  return 0;
}

在您的程序中,您没有显示如何打印test的值。您要做的就是打印mpfr_fac_ui的返回值,即0。