使用boost :: multiprecision作为blitz ++的数据类型

时间:2013-11-20 17:04:49

标签: boost blitz++

我正在尝试使用blitz ++中的漂亮数组语法进行任意精度算术。我的问题是,cosexp之类的通用数学函数不起作用:

#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而不是闪电战,工作正常。然而,带闪电战的第二个区块不会执行cos(myarray)。编译器似乎计算出迭代,但无法找到函数来为值Compiler error log

执行实际的cos(x)

我还想使用boost::multiprecision::mpfr,但一次只能使用一件事。我希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,但它涉及修补闪电战。我已经为blitz-0.10编写了this补丁,并且通过修改后的闪电战,上面的代码就可以了。