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

c++ - 与非常大的操作数相乘

我正在实现一个多精度模块,此时我被困在乘法中。

要执行我的算法,我需要使用 Haswell 微架构将两个 64 位的无符号操作数相乘,并将结果存储在内存块中。我正在使用“g++”进行一个实现,而另一个使用“icpc”的效率更高。

我不知道如何访问结果的每一半以将它们存储在我想要的内存块中。我是否必须使用汇编指令进行乘法运算并使用它们来存储结果,还是存在一种简单的方法?

0 投票
1 回答
109 浏览

c++ - 插入一个 `__asm__` 块来做一个非常大的加法

我正在做一个程序,此时我需要让它高效。我正在使用 Haswell 微架构(64 位)和“g++”。目标是使用一条ADC指令,直到循环结束。

CF集合在第一次添加中吗?还是每次我做ADC指令时都这样?

我认为问题在于每次循环完成时都会丢失。如果是这个问题,我该如何解决?CF

0 投票
0 回答
284 浏览

r - R中的多精度复数

R中的复数定义为:

我有一个程序,旨在处理真实案例和复杂案例中的多个精度值。R 不直接支持多精度。安装Rmpfr包后,我可以定义多个精度值并使用新的mpfr objects.

我有也处理复数的函数。

问题: 我不能打电话

因为,复杂的函数定义只要求这些是双精度的。

有没有一种方法可以在 R 中使用多精度进行复数算术?

0 投票
0 回答
41 浏览

c - radix-2^16 中 255 位整数的精度乘法

我想实现 255 位整数的精度乘法radix-2^16 in C

有人建议我将这么大的数字呈现为array of bignumber[16] ( typedef uint16_t bignumber[16] ). 但是,我不明白这背后的直觉(我知道它也可以是带有 typedef uint32_t 的 bignumber[8])。

那么我如何执行这些大数字的乘法呢?为了检查结果(例如 sage),我需要以 10 为底打印这些数字,但我不知道该怎么做。

任何有助于清楚解释该概念的帮助将不胜感激。

谢谢

0 投票
1 回答
428 浏览

c++ - 使用 MPFR 的不同精度的次正规数

我想模拟各种n位二进制浮点格式,每种格式都有指定的e_maxe_min,精度为p位。我希望这些格式能够模拟次正规数,忠实于 IEEE-754 标准。

自然地,我的搜索将我带到了 MPFR 库,它符合 IEEE-754 并且能够支持具有该mpfr_subnormalize()功能的次规范。但是,我在使用mpfr_set_emin()mpfr_set_emax()正确设置启用低于标准的环境时遇到了一些困惑。我将使用 IEEE 双精度作为示例格式,因为这是 MPFR 手册中使用的示例:

http://mpfr.loria.fr/mpfr-current/mpfr.html#index-mpfr_005fsubnormalize

上面的代码来自上面链接中的 MPFR 手册 - 请注意,e_maxe_min都不等于double. 这里,p设置为 53,与预期的double类型一样,但是e_max设置为 1024,而不是正确的值 1023,并且e_min设置为 -1073;远低于 -1022 的正确值。我知道将指数边界设置得太紧会导致 MPFR 中的中间计算出现溢出/下溢,但我发现准确设置e_min对于确保正确的次正规数至关重要;过高或过低会导致低于正常的 MPFR 结果(用 更新mprf_subnormalize())与相应的不同double结果。

我的问题是应该如何决定将哪些值传递给mpfr_set_emax()和(尤其是) ,以保证具有指数边界e_maxe_minmpfr_set_emin()的浮点格式的正确次规范行为?似乎没有关于此事的任何详细文档或讨论。

衷心感谢,

詹姆士。

编辑 30/07/16:这是一个小程序,它演示了e_maxe_min用于单精度数的选择。

0 投票
1 回答
113 浏览

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

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

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

0 投票
1 回答
120 浏览

c++ - C++ 如何将数据类型分配给二进制序列?

我有一个二进制序列。这个序列表示一个任意精度的整数,但就计算机而言,它只是一个二进制序列。我正在使用多精度库在 C++ 中工作。我只知道如何为任意精度数据类型赋值:

如何获取二进制序列并将其直接分配给数据类型 mp::cpp_int?我意识到我可以遍历每一位并在我达到1的地方添加 2^,但我试图避免这样做。


回复:

Galik:出于某种原因,我的编译器(Visual Studio 2013)不喜欢这样。

在第一个 0 之后,它会不断地将红色波浪状地放置。

另外,是的,提高多精度。

0 投票
0 回答
56 浏览

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

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

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

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

0 投票
1 回答
368 浏览

c - multiprecision unsigned subtraction in C

I am trying to implement multi-precision unsigned subtraction over a finite field (p=2^191-19) in C, but I cannot figure out how to deal with borrow bit! My operands are represented in radix-2^16 as:

which means each element of the T-type array has exactly 16-bits data (radix-2^16 representation). Now I want to subtract two operands of T type, but I do not know which one is smaller! If the result is negative, I want to add the result to the prime value to have positive results in modular arithmetic. Here is my implementation based on this book page-30(Multiprecision subtraction algorithm):

but I got the wrong answer!

0 投票
2 回答
381 浏览

c++ - 类型转换 c++, quadmath

quadmath 库没有太多在线文档,我想使用__complex128type 执行两个简单的操作。

  • 有没有办法在这种类型的变量中轻松打印值?
  • 如何将变量从 转换回__complex128complex<double>甚至将单个__float128实部和虚部转换为加倍?

第二个问题更重要,因为如果我可以转换它,我可以简单地使用cout

编辑:一切都涉及到以下问题。我如何转换__float128double?