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

Posted

技术标签:

【中文标题】我应该如何使用 mpfr::mpfr_fac_ui 函数?【英文标题】:How am I suppose to use mpfr::mpfr_fac_ui function? 【发布时间】:2019-05-26 08:50:18 【问题描述】:

我尝试在互联网上找到一个如何使用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】:

在 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。

【讨论】:

嗯,奇怪,现在我按照你的方式打印它,它也向我显示 120,之前我正在检查 mpfr_t 的内部,但我想我看错了。

以上是关于我应该如何使用 mpfr::mpfr_fac_ui 函数?的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何在 android 中使用 JWT?

我应该在 __main__.py 中使用啥形式的导入,然后我应该如何运行项目?

我应该如何使用 DataflowBlockOptions.CancellationToken?

我应该如何使用 CMake 构建 MPI C++ 程序?

我应该如何在 MySQL 中使用 NOT IN 语句

如果我从多个线程中使用 JSch,我应该如何使用它