创建具有特定精度的新 cpp_dec_float 类型
create new cpp_dec_float types with specific precision
我正在 运行 使用 C++ 进行物理模拟,为了获得精确的结果,我正在使用 boost::multiprecision。
到目前为止,我使用的是 cpp_dec_float_50 类型,但是,现在我需要测试具有不同精度的不同变量的模拟。
那么,如何创建新类型,例如 cpp_dec_float_27(27 位精度)?
我尝试更改模板代码:
namespace boost{ namespace multiprecision{
template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
class cpp_dec_float;
typedef number<cpp_dec_float<50> > cpp_dec_float_50;
typedef number<cpp_dec_float<100> > cpp_dec_float_100;
}} // namespaces
但是我遇到了很多问题。
如果我理解正确的话,您正在尝试更改您的升压安装,您永远不应该这样做,因为其余的升压源可能依赖于它。
如果您想定义自己的精度,您需要一个简单的 typedef:
typedef number<cpp_dec_float<27> > cpp_dec_float27;
准备就绪。
但是,如果您的函数依赖于类型 cpp_dec_float100,您可能需要考虑使用这些函数的模板来接受多精度。
我正在 运行 使用 C++ 进行物理模拟,为了获得精确的结果,我正在使用 boost::multiprecision。 到目前为止,我使用的是 cpp_dec_float_50 类型,但是,现在我需要测试具有不同精度的不同变量的模拟。
那么,如何创建新类型,例如 cpp_dec_float_27(27 位精度)?
我尝试更改模板代码:
namespace boost{ namespace multiprecision{
template <unsigned Digits10, class ExponentType = boost::int32_t, class Allocator = void>
class cpp_dec_float;
typedef number<cpp_dec_float<50> > cpp_dec_float_50;
typedef number<cpp_dec_float<100> > cpp_dec_float_100;
}} // namespaces
但是我遇到了很多问题。
如果我理解正确的话,您正在尝试更改您的升压安装,您永远不应该这样做,因为其余的升压源可能依赖于它。
如果您想定义自己的精度,您需要一个简单的 typedef:
typedef number<cpp_dec_float<27> > cpp_dec_float27;
准备就绪。
但是,如果您的函数依赖于类型 cpp_dec_float100,您可能需要考虑使用这些函数的模板来接受多精度。