0

我正在尝试结合 blitz++ 的漂亮数组语法进行任意精度算术。我的问题是,像cos,exp等通用数学函数不起作用:

#include <blitz/array.h>
#include <boost/multiprecision/float128.hpp>

using namespace boost::multiprecision;
using namespace blitz;

int main() {

    float128 a = 1;
    a = cos(a);
    cout << a << endl;

    Array<float128,3> myarray(2,3,4);
    myarray = 1;
    myarray = cos(myarray);
    cout << myarray;

}

g++ test.cpp -lquadmath -o test

第一个块,仅使用 float128 而不是 blitz,工作正常。然而,闪电战的第二个区块不会做cos(myarray). 编译器看似计算出迭代,但找不到对cos(x)值执行实际操作的函数:编译器错误日志

我也想使用boost::multiprecision::mpfr,但一次一件事。我希望有人能帮帮忙。

4

1 回答 1

0

我找到了一个解决方案,但它涉及修补闪电战。我已经为 blitz-0.10 编写了这个补丁,并且使用修改后的 blitz 上面的代码可以正常工作。

于 2013-11-21T15:02:27.683 回答