1

我一直在使用 Visual Studio Code Runner 毫无问题地编译 C++ 项目,但现在我需要使用 GMP 后端和 Boost Multiprecision Library。

正如我在另一个问题中所展示的那样,我已经有了仅依赖于 Boost Multiprecision Library 的工作代码。我正在尝试做的是使用 GMP 的高精度浮点数,而不是 Boost 附带的浮点数。如下所示:

#include <iostream>
#include <boost/math/distributions/negative_binomial.hpp>
#include <boost/multiprecision/gmp.hpp>

using namespace std;
using namespace boost;

typedef boost::multiprecision::number<boost::multiprecision::gmp_float<50>> myPrecision;
// typedef boost::multiprecision::mpf_float_50 myPrecision; // this also raises the errors

template <class T1, class T2>
myPrecision negbinPDF(T1 passed_val, T2 passed_par1, T2 passed_par2)
{
    myPrecision val = myPrecision(passed_val);
    myPrecision par1 =  myPrecision(passed_par1);
    myPrecision par2 = myPrecision(passed_par2);

    return math::pdf(math::negative_binomial_distribution<myPrecision>(par1, par2), val);
};

int main() {
    auto p = negbinPDF(1.23456789012345678901234567890, 8.0, 0.25);
    cout << "The PDF is: " << p << endl;
}

运行上述代码时,会引发许多错误(请参阅此处),从一些未定义的引用开始。因此我的问题是:如何使用 Visual Studio Code 的 Code Runner(在 Linux 中)链接到 GMP?

4

0 回答 0