问题标签 [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 回答
461 浏览

c++ - 提升多精度随机生成器种子误差

我一直在关注boost 库中的文档来生成多精度随机整数,但是在文档中没有提到如何设置种子。

我不知道如何在不出现编译错误的情况下设置种子。

我该如何编译:

这是我得到的编译错误:

我也尝试过用 c++11 编译,但我仍然有错误。你能告诉我它是怎么做的吗?

使用 C++11 编译

结果是:

0 投票
2 回答
1313 浏览

c++ - 使用 boost lib 的更高精度浮点(高于 16 位)

我正在运行物理实验的模拟,所以我需要非常高的浮点精度(超过 16 位)。我使用 Boost.Multiprecision,但是无论我尝试什么,我都无法获得高于 16 位的精度。我使用 C++ 和 eclipse 编译器运行模拟,例如:

输出是:

但它应该是:

如您所见,在 16 位之后它是不正确的。为什么?

0 投票
1 回答
431 浏览

c++ - 提升多精度:递归模板实例化超出最大长度 256

尝试使用boost的多精度数字玩一点我得到了以下错误

后面有很多带有实例化错误签名的行。编译以下代码时出现问题:

我不知道为什么会发生这种情况,因为这段代码在用常规整数实例化时编译得非常好。

编辑:我自己回答。永远记住在处理模板和递归时要明确!

0 投票
1 回答
308 浏览

c++ - 创建具有特定精度的新 cpp_dec_float 类型

我正在使用 c++ 运行物理模拟,为了获得精确的结果,我正在使用 boost::multiprecision。到目前为止,我使用的是 cpp_dec_float_50 类型,但是,现在我需要测试不同精度的不同变量的模拟。

那么,如何创建新类型,例如 cpp_dec_float_27(27 位精度)?

我试图更改模板代码:

但我有很多问题。

0 投票
0 回答
143 浏览

c - 以 radix-2^32 表示形式实现 Karatsuba 乘法(C 代码)

我正在尝试为两个 256 位操作数的乘法实现 3 级 Karatsuba 乘法。我想使用 radix-2^32 表示我的操作数,因此到目前为止我已经实现了两个 32 位操作数的教科书乘法,我打算在我的 Karatsuba 乘法函数中使用它。只要我知道,我可以将我的操作数划分如下:

正如您在此处看到的,A 和 B 有 256 位,而 A000 和 B000 有 32 位,适合我的unit32_t数据类型。正如我之前提到的,我已经为两个 32 位操作数实现了教科书乘法,并且效果很好。这是我的问题,在第 3 级,当我添加两个 32 位操作数 (A000 + A0001) 和 (B000 + B0001) 时,由于进位,我得到了 33 位结果。因此,我应该将两个 33 位操作数相乘并得到 66 位结果,这在我的情况下不打算这样做!那么,我怎样才能只使用uint32_t数据类型表示来实现这个算法呢?

0 投票
1 回答
297 浏览

c++ - 以 2、8、10、16 以外的基数提升 mpz_int

我可以从具有标准基数的字符串创建多精度整数

要像在 GMP 中一样使用基数 2 到 62,例如可以使用

有没有更直接的方法没有辅助变量?

0 投票
1 回答
714 浏览

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

我读过boost::multiprecision 文档

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

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

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

0 投票
3 回答
510 浏览

c - Multi-precision addition implementation

I am trying to implement multi-precision arithmetic for 256-bit operands based on radix-2^32 representation. In order to do that I defined operands as:

and here is my MP addition function:

I implemented it without using loop for simplicity. Now when I test my function inside main:

I've got:

However, when I verified my result with sage, I've got:

Would you please help me out here?

0 投票
1 回答
387 浏览

c - CUDA中的多精度乘法

我正在尝试在 CUDA 中实现多精度乘法。为此,我实现了一个内核,它应该计算uint32_t类型操作数与 256 位操作数的乘法,并将结果放入 288 位数组中。到目前为止,我已经想出了这个代码:

我的数据类型是:

我的内核工作,但它给了我错误的结果。我无法在内核中调试,所以如果有人让我知道问题出在哪里或者我如何在内核中调试我的代码,我将不胜tegra-ubuntu感激cuda-6.0。谢谢

0 投票
0 回答
63 浏览

c - ARM内联汇编多精度乘法

我是 ARM 汇编的新手,我想在内联汇编中实现我的 C 函数之一。我的函数是多精度乘法,它将 32 位无符号整数与 256 位无符号整数相乘,并将结果放入 288 位无符号整数数据类型。我将我的数据类型定义为:

这是我的功能:

对我来说似乎很好。但是当我调试我的代码时,例如在执行后的第一行, "umull %0, %1, %9, %10;\n\t" 我有:

看来我在组装说明中犯了一些错误。谁能给我解释一下?