问题标签 [boost-multiprecision]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何使用 boost::multiprecision 在运行时更改数字精度
根据数字类型,精度可以任意大(仅受可用内存限制),在编译时固定(例如 50 或 100 个十进制数字),或者在运行时由成员函数控制的变量。这些类型启用了表达式模板,以获得比天真的用户定义类型更好的性能。
我已经阅读了更多文档,但我没有发现任何有关在运行时更改精度的信息。我只看到了允许我在编译时设置精度的模板,这不是我想要的(我想创建一个使用非常高的缩放因子来缩放分形的程序)。
如何创建允许我在运行时更改其精度的双精度类型?
c++ - boost::multiprecision::export_bits 抛出一个负 cpp_int 数
当基于 cpp_int 对负 boost::multiprecision 数调用 export_bits 时,内部方法 msb 会引发异常(“不支持以负值测试单个位”)。(提升 1.60)
如何提取 boost::multiprecision 数字的内容? Boost 文档说,export_bits 旨在用于数据交换,因此在我看来,如果它不能导出支持的值,这将是一个重大缺陷。
我了解到一种解决方法可能是直接访问后端的肢体,但它访问的内部结构可能会发生变化。
更新:我在 boost 邮件列表上发布了这个问题,为此https://svn.boost.org/trac/boost/ticket/12170打开了一张票,它将在即将发布的版本中修复。
c++ - 与 C++ 中的正交和多精度升压库集成
搜索后我发现了令人惊叹的集成代码
正交升压库。
而不是
对数(x)/(1+x)
想整合
(poly[0]+poly[1]*x+poly[2]*x^2+...+poly[n]*x^n)*log(x)/(1+x)
. 但我不
知道如何插入向量
聚
至
结构体
甚至如何从主函数调用这些运算符。编码 :
此外,当更改 double 运算符时,将其更改为 cpp_dec_float_50 运算符
结构体
出现很多问题。在我的项目中需要后一种类型。任何人都可以解决这个问题?
编辑
我试过这个,但我做错了
使用 Patstew 建议时编辑出现两个错误
c++ - 使用 boost 多精度运算符而不是 const 双一
我有以下代码用于通过 boost 库进行集成。我试图将 double 运算符更改为 cpp_dec_float_50 运算符。
如果更改为:
cpp_dec_float_50 operator()(cpp_dec_float_50 x) const {
并将所有相关内容更改为 cpp_dec_float_50,然后出现错误列表,请参见此处
任何人都可以解决这个问题吗?
对于没有 Boost Quadrature 库的用户,您可以从这里下载它https://github.com/coolfluid/coolfluid3/tree/master/include/boost/numeric
c++ - 为什么这个记忆代码段错误?
我有以下代码计算给定 n 和 k 的第二类斯特林数,
不幸的是,当这段代码运行时,它会出现段错误。对于插入的前 87795 个值,它似乎运行良好memo
,但此后不久就崩溃了。具体来说,段错误发生在map::count
, 行中if (memo.count(nKPair) > 0) {
。我认为这可能是memo
尺寸不足的问题,所以我在分配给的任务中添加了以下警告memo
,
但这没有帮助。我还注意到 87795 值并不表示何时崩溃。通过一些小的修改,将第一个 if 语句更改为,
将该值更改为 66453。
有谁知道这里发生了什么?
boost - 提升多精度 gmp_float convert_to() 给出编译错误
我正在使用 boost 多精度库浮点数。我需要将 a 映射gmp_float
到 antanh
然后将其作为双精度值,因为值为tanh
will [0, 1)
。当我使用时,convert_to<double>()
我得到编译错误,如下面的代码片段所示。
但是明确地将其转换为双重(double)sigmapped_v
工作
c++ - 为什么 Boost::multiprecision::sqrt(1) 返回 0?
Boost::multiprecision::sqrt(1) 似乎返回 0
输出:
i == 1
mp::sqrt(i) == 0
我希望 sqrt(1) == 1。
我在coliru和本地安装的 gcc 和 Boost 1.62上得到了相同的结果。这会发生在其他人身上吗?我错过了什么还是这是一个错误?
c++ - boost::multiprecision::number
我是使用 boost 库的新手,所以我感谢每一位帮助我的人。
但我得到如下编译器错误:
我也改变了上面的代码:
并获得新的编译器错误:
[编译器错误]
c++ - boost::multiprecision::uint128_t sizeof 为 24
基础数学(128 / 8 = 16)的说法不同。我有点失望,想要一些答案——因为根据我的习惯,这个符号(type_num_of_bytes_t)不仅描述了你可以放入变量的数据量,还描述了跨平台的固定变量大小,以及后者更重要的是恕我直言。我究竟做错了什么?
输出:24。
我使用标准 x86/64 架构 CPU,在 Windows 上使用 vs2013 进行编译。
更新:提升版本是 1.61。
c++ - 尝试使用 boost.multiprecision 编译项目时的 C2143/C2518
我一直在尝试让 boost.multiprecision 在我的 VC2017 项目中工作时遇到问题,并且我试图使最简单的项目成为可能作为概念证明:
不幸的是,此代码无法编译,并出现以下错误:
这些是我在最初使用 boost.multiprecision 的更复杂的项目中遇到的完全相同的错误。我在 Visual Studio 2015 中编译这段代码没有问题。有谁知道出了什么问题,我需要做些什么来修复它?
编辑:
使用 boost.asio 的项目编译没有问题: