问题标签 [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++ - 与非常大的操作数相乘
我正在实现一个多精度模块,此时我被困在乘法中。
要执行我的算法,我需要使用 Haswell 微架构将两个 64 位的无符号操作数相乘,并将结果存储在内存块中。我正在使用“g++”进行一个实现,而另一个使用“icpc”的效率更高。
我不知道如何访问结果的每一半以将它们存储在我想要的内存块中。我是否必须使用汇编指令进行乘法运算并使用它们来存储结果,还是存在一种简单的方法?
c++ - 插入一个 `__asm__` 块来做一个非常大的加法
我正在做一个程序,此时我需要让它高效。我正在使用 Haswell 微架构(64 位)和“g++”。目标是使用一条ADC
指令,直到循环结束。
该CF
集合仅在第一次添加中吗?还是每次我做ADC
指令时都这样?
我认为问题在于每次循环完成时都会丢失。如果是这个问题,我该如何解决?CF
r - R中的多精度复数
R中的复数定义为:
我有一个程序,旨在处理真实案例和复杂案例中的多个精度值。R 不直接支持多精度。安装Rmpfr
包后,我可以定义多个精度值并使用新的mpfr objects
.
我有也处理复数的函数。
问题: 我不能打电话
因为,复杂的函数定义只要求这些是双精度的。
有没有一种方法可以在 R 中使用多精度进行复数算术?
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 为底打印这些数字,但我不知道该怎么做。
任何有助于清楚解释该概念的帮助将不胜感激。
谢谢
c++ - 使用 MPFR 的不同精度的次正规数
我想模拟各种n位二进制浮点格式,每种格式都有指定的e_max和e_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_max和e_min都不等于double
. 这里,p设置为 53,与预期的double
类型一样,但是e_max设置为 1024,而不是正确的值 1023,并且e_min设置为 -1073;远低于 -1022 的正确值。我知道将指数边界设置得太紧会导致 MPFR 中的中间计算出现溢出/下溢,但我发现准确设置e_min对于确保正确的次正规数至关重要;过高或过低会导致低于正常的 MPFR 结果(用 更新mprf_subnormalize()
)与相应的不同double
结果。
我的问题是应该如何决定将哪些值传递给mpfr_set_emax()
和(尤其是) ,以保证具有指数边界e_max和e_minmpfr_set_emin()
的浮点格式的正确次规范行为?似乎没有关于此事的任何详细文档或讨论。
衷心感谢,
詹姆士。
编辑 30/07/16:这是一个小程序,它演示了e_max和e_min用于单精度数的选择。
boost - 提升多精度 gmp_float convert_to() 给出编译错误
我正在使用 boost 多精度库浮点数。我需要将 a 映射gmp_float
到 antanh
然后将其作为双精度值,因为值为tanh
will [0, 1)
。当我使用时,convert_to<double>()
我得到编译错误,如下面的代码片段所示。
但是明确地将其转换为双重(double)sigmapped_v
工作
c++ - C++ 如何将数据类型分配给二进制序列?
我有一个二进制序列。这个序列表示一个任意精度的整数,但就计算机而言,它只是一个二进制序列。我正在使用多精度库在 C++ 中工作。我只知道如何为任意精度数据类型赋值:
如何获取二进制序列并将其直接分配给数据类型 mp::cpp_int?我意识到我可以遍历每一位并在我达到1的地方添加 2^位,但我试图避免这样做。
回复:
Galik:出于某种原因,我的编译器(Visual Studio 2013)不喜欢这样。
在第一个 0 之后,它会不断地将红色波浪状地放置。
另外,是的,提高多精度。
boost - 错误的结果提升 gmp 浮点数
我需要5^64
使用 boost 多精度库进行计算,该库应该产生542101086242752217003726400434970855712890625
但boost::multiprecision::pow()
需要mpfloat
并给出542101086242752217003726392492611895881105408
.
但是,如果我循环并重复使用,mpint
我会得到正确的结果。
这是一个错误吗?还是我boost::multiprecision::pow()
以错误的方式使用?或者我有替代使用boost::multiprecision::pow()
?
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!
c++ - 类型转换 c++, quadmath
quadmath 库没有太多在线文档,我想使用__complex128
type 执行两个简单的操作。
- 有没有办法在这种类型的变量中轻松打印值?
- 如何将变量从 转换回
__complex128
,complex<double>
甚至将单个__float128
实部和虚部转换为加倍?
第二个问题更重要,因为如果我可以转换它,我可以简单地使用cout
!
编辑:一切都涉及到以下问题。我如何转换__float128
为double
?