我应该如何使用 mpfr::mpfr_fac_ui 功能?
How am I suppose to use mpfr::mpfr_fac_ui function?
我试图在互联网上找到一个如何使用 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
没有 return 任何错误 (returns 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 ("%Rg\n", test);
mpfr_clear (test);
return 0;
}
在您的程序中,您没有显示如何打印 test
的值。您所做的就是打印 mpfr_fac_ui
的 return 值,即 0.
我试图在互联网上找到一个如何使用 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
没有 return 任何错误 (returns 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 ("%Rg\n", test);
mpfr_clear (test);
return 0;
}
在您的程序中,您没有显示如何打印 test
的值。您所做的就是打印 mpfr_fac_ui
的 return 值,即 0.