xno*_*nor 5 c++ boost complex-numbers arbitrary-precision visual-studio-2012
我需要一个类似BSD的许可C(++)多精度库,支持复数,所以我尝试了boost.
以下代码失败:
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <complex>
using namespace boost::multiprecision;
std::complex<cpp_dec_float_50>(1.0, 2.0) / std::complex<cpp_dec_float_50>(1.0, 2.0)
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2012中出现错误C2440,因为复杂的实现尝试在_Isinf或_Isnan等内部函数中强制转换为double.
这是我的错误吗?我怎样才能解决这个问题?有更好的图书馆吗?
从 C++11 26.4/2 开始:
对于除 float、double 或 long double 之外的任何类型实例化模板复合体的效果未指定。
所以你不能可靠地std::complex与其他类型一起使用,但也许 boost 有一种complex可以与cpp_dec_float_50.