问题标签 [extended-precision]
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.
assembly - 如何使用 x86 汇编语言将两个 64 位数字相乘?
我该怎么去...
将两个 64 位数字相乘
两个 16 位十六进制数相乘
...使用汇编语言。
我只能使用寄存器 %eax、%ebx、%ecx、%edx 和堆栈。
编辑:哦,我在 x86 上使用 ATT 语法
EDIT2:不允许反编译成程序集...
floating-point - 80 位扩展精度数据类型的应用/好处是什么?
是的,我的意思是说80-bit。那不是笔误...
我在浮点变量方面的经验总是涉及 4 字节的倍数,比如单数(32 位)、双数(64 位)和长双数(我曾见过它被称为 96 位或 128 位)。这就是为什么当我在编写一些代码以读取和写入AIFF(音频交换文件格式)文件时遇到80 位扩展精度数据类型时有点困惑:选择了扩展精度变量来存储采样音轨的速率。
当我浏览 Wikipedia 时,我发现上面的链接以及IEEE 754-1985 标准摘要中的 80 位格式的简要说明(但不在IEEE 754-2008 标准摘要中)。似乎在某些架构上“扩展”和“长双”是同义词。
我没有遇到的一件事是使用扩展精度数据类型的特定应用程序(当然,AIFF 文件采样率除外)。这让我想知道:
- 有没有人遇到过扩展精度对于某些编程应用程序是必要/有益的情况?
- 80 位浮点数的好处是什么,除了明显的“它比 double 精度高一点,但比 long double 的大多数实现少字节”?
- 它的适用性正在减弱吗?
visual-c++ - 在 MSVC 中将扩展精度浮点数(80 位)转换为双精度(64 位)
在 MSVC win32/win64 中从扩展精度浮点数(80 位值,在某些编译器中也称为long double
)到双精度(64 位)转换的最便携和“正确”的方法是什么?
MSVC 目前(截至 2010 年)假定这long double
是double
同义词。
我可能可以在内联 asm 中编写fld
/fstp
汇编程序对,但内联 asm 不适用于 MSVC 中的 win64 代码。我是否需要将此汇编代码移动到单独的 .asm 文件中?难道真的没有好的解决办法吗?
c - gcc 是否支持 amd64 上的 128 位 int?
gcc 是否支持 amd64 上的 128 位 int?
如何定义它?
如何使用 scanf/printf 读/写它?
bigint - XMM 寄存器可以用来做任何 128 位整数数学吗?
我的印象肯定不是但也许有一个聪明的把戏?谢谢。
assembly - 在 8086 中使用 16 位寄存器操作 32 位数字
我正在尝试编写一个程序来获取两个 6 位十进制数字并显示它们的相加,但是在 16 位 8086 中,我将数字定义为双字并将 LO 放在 WORD 1 中,将 HO 放在字 2 中。类似于下面的代码,但我没有任何下一步要做的想法,任何人都可以建议我下一步操作的算法吗?谢谢
在这个程序中,di 是一个存储通过循环生成的数字的地方,当用户输入一个数字时,di 将倍数为 10,新数字将添加到 di,如:得到 28 的过程 di=0*10+2=2 di= 2*10*+8=28
floating-point - OCaml 中的 80 位扩展精度浮点
是否有 OCaml 库可以利用 IA-32 和 x86-64 架构上的 80 位扩展精度浮点类型?
我知道MPFR 绑定,但我理想的库会更轻量级。利用历史浮点指令将是理想的。
c - 从双精度参数开始的 80 位扩展精度计算的属性
这是插值函数的两种实现。参数u1
总是在0.
和之间1.
。
在具有 80 位long double
的严格 IEEE 754 平台上,所有计算interpol_64()
都根据 IEEE 754 双精度和interpol_80()
80 位扩展精度进行。程序打印:
我对“函数返回的结果总是介于u2
和u3
”的属性感兴趣。此属性为 false interpol_64()
,如main()
上面的值所示。
房产有机会成真interpol_80()
吗?如果不是,反例是什么?如果我们知道这一点u2 != u3
或它们之间有最小距离是否有帮助?是否有一种方法可以确定中间计算的有效宽度,在该计算中该属性可以保证为真?
编辑:在我尝试的所有随机值上,当中间计算在内部以扩展精度完成时,该属性保持不变。如果interpol_80()
带long double
参数,构建反例相对容易,但这里的问题专门针对带double
参数的函数。这使得建立一个反例变得更加困难,如果有的话。
注意:生成 x87 指令的编译器可能会为interpol_64()
and生成相同的代码interpol_80()
,但这与我的问题无关。
c++ - 返回浮点类型是否完全符合 IEEE-754 的函数?
我想编写一个函数来检查或float
完全符合 IEEE-754 格式。我是说:double
long double
- 浮点 = IEEE-754 二进制 32
- 双 = IEEE-754 二进制 64
- long double = IEEE-754 binary128
我认为这std::numeric_limits<T>::is_iec559
与此相对应,但它在我的 Linux 64 位上返回true
,但在内部以Intel 格式编码。那么该怎么做呢?long double
sizeof(long double) = 16 bytes
80-bit