我需要一个类似 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)
在 Visual Studio 2012 中,出现错误 C2440,因为复杂的实现尝试在 _Isinf 或 _Isnan 等内部函数中转换为 double。
这是我的错误吗?我怎样才能解决这个问题?有更好的图书馆吗?
从 C++11 26.4/2 开始:
为任何其他类型实例化模板复合体的效果
未指定 float、double 或 long double。
所以你不能可靠地使用std::complex
与其他类型,但也许 boost 有一个complex
适用于的类型cpp_dec_float_50
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)