问题标签 [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.

0 投票
1 回答
714 浏览

c++ - 如何使用 boost::multiprecision 在运行时更改数字精度

我读过boost::multiprecision 文档

根据数字类型,精度可以任意大(仅受可用内存限制),在编译时固定(例如 50 或 100 个十进制数字),或者在运行时由成员函数控制的变量。这些类型启用了表达式模板,以获得比天真的用户定义类型更好的性能。

我已经阅读了更多文档,但我没有发现任何有关在运行时更改精度的信息。我只看到了允许我在编译时设置精度的模板,这不是我想要的(我想创建一个使用非常高的缩放因子来缩放分形的程序)。

如何创建允许我在运行时更改其精度的双精度类型?

0 投票
0 回答
352 浏览

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打开了一张票,它将在即将发布的版本中修复。

http://www.boost.org/doc/libs/master/libs/multiprecision/doc/html/boost_multiprecision/tut/import_export.html

0 投票
1 回答
731 浏览

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 建议时编辑出现两个错误

0 投票
0 回答
196 浏览

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

0 投票
1 回答
167 浏览

c++ - 为什么这个记忆代码段错误?

我有以下代码计算给定 n 和 k 的第二类斯特林数,

不幸的是,当这段代码运行时,它会出现段错误。对于插入的前 87795 个值,它似乎运行良好memo,但此后不久就崩溃了。具体来说,段错误发生在map::count, 行中if (memo.count(nKPair) > 0) {。我认为这可能是memo尺寸不足的问题,所以我在分配给的任务中添加了以下警告memo

但这没有帮助。我还注意到 87795 值并不表示何时崩溃。通过一些小的修改,将第一个 if 语句更改为,

将该值更改为 66453。

有谁知道这里发生了什么?

0 投票
1 回答
113 浏览

boost - 提升多精度 gmp_float convert_to() 给出编译错误

我正在使用 boost 多精度库浮点数。我需要将 a 映射gmp_float到 antanh然后将其作为双精度值,因为值为tanhwill [0, 1)。当我使用时,convert_to<double>()我得到编译错误,如下面的代码片段所示。

但是明确地将其转换为双重(double)sigmapped_v工作

0 投票
1 回答
322 浏览

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上得到了相同的结果。这会发生在其他人身上吗?我错过了什么还是这是一个错误?

0 投票
1 回答
896 浏览

c++ - boost::multiprecision::number

我是使用 boost 库的新手,所以我感谢每一位帮助我的人。

但我得到如下编译器错误:

我也改变了上面的代码:

并获得新的编译器错误:

[编译器错误]

0 投票
1 回答
1633 浏览

c++ - boost::multiprecision::uint128_t sizeof 为 24

基础数学(128 / 8 = 16)的说法不同。我有点失望,想要一些答案——因为根据我的习惯,这个符号(type_num_of_bytes_t)不仅描述了你可以放入变量的数据量,还描述了跨平台的固定变量大小,以及后者更重要的是恕我直言。我究竟做错了什么?

输出:24。

我使用标准 x86/64 架构 CPU,在 Windows 上使用 vs2013 进行编译。

更新:提升版本是 1.61。

0 投票
1 回答
1716 浏览

c++ - 尝试使用 boost.multiprecision 编译项目时的 C2143/C2518

我一直在尝试让 boost.multiprecision 在我的 VC2017 项目中工作时遇到问题,并且我试图使最简单的项目成为可能作为概念证明:

不幸的是,此代码无法编译,并出现以下错误:

这些是我在最初使用 boost.multiprecision 的更复杂的项目中遇到的完全相同的错误。我在 Visual Studio 2015 中编译这段代码没有问题。有谁知道出了什么问题,我需要做些什么来修复它?

编辑:

使用 boost.asio 的项目编译没有问题: