我正在尝试结合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,而不使用闪电战,运行良好。然而,使用闪电战的第二个块不会执行cos(myarray)。编译器似乎计算出了迭代,但找不到对值执行实际cos(x)的函数:Compiler error log
我也想使用boost::multiprecision::mpfr,但一次只能做一件事。我希望有人能帮上忙。
发布于 2013-11-21 23:02:28
我已经找到了一个解决方案,但它涉及到修补闪电战。我已经为闪电战-0.10编写了this补丁,使用修改后的闪电战,上面的代码就可以工作了。
https://stackoverflow.com/questions/20102259
复制相似问题