问题标签 [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 投票
0 回答
56 浏览

boost - 错误的结果提升 gmp 浮点数

我需要5^64使用 boost 多精度库进行计算,该库应该产生542101086242752217003726400434970855712890625boost::multiprecision::pow()需要mpfloat并给出542101086242752217003726392492611895881105408.

但是,如果我循环并重复使用,mpint我会得到正确的结果。

这是一个错误吗?还是我boost::multiprecision::pow()以错误的方式使用?或者我有替代使用boost::multiprecision::pow()

0 投票
1 回答
845 浏览

c++ - C++ BigInteger 到字节数组

在 Java 中,有一个 BigInteger 类来使用大数,它有一个转换器函数:toByteInteger,如下所示:

在 C++ 中,我尝试Boost.Multiprecision将大数类型与mpz_int一起使用,但它没有任何将mpz_int转换为字节数组的函数。

C++ 中是否有任何等效的 BigInteger 类型?我正在使用 qt 框架,qt 上是否有任何大整数结构?是否可以将其转换为字节数组?

0 投票
0 回答
360 浏览

r - Rcpp 和 Boost 多精度,

我想在 Rcpp 中使用 boost/multiprecision。因此,我环顾四周,发现了有关 boost: onetwo的这些线程。关于四精度的第一个正是我想要使用的。问题是我无法编译给定的示例。但是,我可以从第二个线程编译示例,该线程仅使用 boost 包中的不同目录。所以我不知道出了什么问题。第一个线程的相关代码:

我得到的错误是:“.../R/win-library/3.3/BH/include/boost/multiprecision/gmp.hpp:21:17:致命错误:gmp.h:没有这样的文件或目录#include” . 但是当我浏览到:“.../R/win-library/3.3/BH/include/boost/multiprecision/”时,文件“gmp.hpp”就在那里。我已经尝试按照第一个线程中的描述运行“Sys.setenv("PKG_LIBS" = "-lmpfr -lgmp")",但没有运气。有什么建议么?万一这很重要,我正在使用Windows。

0 投票
2 回答
2439 浏览

c++ - C++ boost/multiprecision:致命错误:mpfr.h:没有这样的文件或目录

我遵循了这个答案并使用Boost.Multiprecision来使用高精度浮点数(示例)。

主文件

但是,当我收到以下错误时,我在编译此代码时遇到了严重问题:

即使安装libgmp3-devgmplib也不起作用。

怎么了?

CMakeLists.txt

0 投票
1 回答
409 浏览

c++ - 如何将 C++ max 函数与 boost 128 位整数一起使用

如果我有以下代码:

如果我在 Ubuntu 上使用 g++ 进行编译,我会收到以下错误:

错误:无法在赋值中将 'const boost::multiprecision::number >' 转换为 'int64 {aka long long int}'

比较两个 int128_t 数字以查看哪个更大的正确方法是什么?

编辑:我正在使用 std::max。

0 投票
2 回答
702 浏览

c++ - 如何从 boost int256_t 中取以 2 为底的对数?

所以我想从 int256_t 中取对数。

我发现了这一点,但将其修改为 sizeof int256_t 不起作用。它会给出不正确的结果: https ://stackoverflow.com/a/11376759

boost中是否有支持多精度的日志功能?

0 投票
1 回答
253 浏览

c++ - 多精度提升间隔

我尝试将 boost 区间算术库与 boost 多精度库一起使用。如果我将标准双精度与本机双精度数据类型一起使用,则一切正常。

然而,使用多精度库,它产生的结果实际上更不准确。这里有一些代码:

可以看出,该double版本产生了非常准确的结果。该BigFloat版本应该更加准确,但是它产生了一个非常大的界限——实际上是sin函数的最大值,所以这个界限完全没有用。

我该如何解决这个问题,以便区间库实际上利用更高的精度并产生更清晰的界限?

0 投票
1 回答
531 浏览

c++ - 提升多精度 cpp_int 乘以浮点数

可以将 boost multiprecision int 乘以浮点数吗?这不支持吗?

0 投票
1 回答
251 浏览

c++ - 用 cpp_int 构建一个大的 boost unordered_map

我正在用 c++ 编写一些代码,用于需要使用多精度库(如 boost)的类分配。基本上,我需要用一些大整数构建一个哈希表,然后在该表中查找某个值。

当我使用注释掉的 h、g、p 时 - 代码运行良好且非常快。一旦我切换到未注释掉的那些,它会在以下行引发内存异常: hash_str>::iterator got = mp.find(lkp); 我刚开始使用 c++ 并且很确定有些事情还很遥远,因为即使数量很大,它也应该运行得相当快。

以防万一,这是我得到的异常:MiM.exe 中 0x768F2F71 处的未处理异常:Microsoft C++ 异常:boost::exception_detail::clone_impl > 在内存位置 0x0109EF5C。

0 投票
2 回答
333 浏览

c++ - 无法在 Windows 上使用英特尔编译器编译示例 boost::multiprecision

我正在使用 VS 2017 社区版、英特尔编译器 17.00 更新 6 和 boost 1.66,试图了解 boost::multiprecision::float128 的方法。从字面上获取示例代码并将其放入 VS 的新项目中

编译给出了多个错误,大致分为两个类别/文件:

  1. 在 float128.hpp 中:

    • fmaq、remquoq和remainderq的三个错误“错误:标识符“xxx”未定义”。事实上,我无法找到它们的定义 - 缺少包含?

    • 全局范围没有“signbitq” - 这又看起来像缺少定义(即与上面相同)

对于 GCC,在 quadmath.h 中可以找到上述函数,但是,在使用 ICC 时,boost 标头似乎不包含它(即设置了 BOOST_MP_USE_QUAD)。

  1. 在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128\include\xutility 中:此声明中不允许使用显式模板参数列表。有三个计数

我假设我需要从 VS 中删除默认放入的东西,但我不知道究竟是什么。

谢谢您的帮助

编辑:上面的错误#2实际上根本不反对提升(我应该把它移到一个单独的问题吗?)。以下代码从这里复制!没有在我的设置中编译:

}

确切的错误(其中之一)是:

我发现表明使用的特定版本(ICC-17.0 Up6 和 VS 15.6)可能存在问题,但是我无法真正迁移到新的英特尔编译器,也无法测试 VS 15.4