问题标签 [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.

0 投票
11 回答
32274 浏览

assembly - 如何使用 x86 汇编语言将两个 64 位数字相乘?

我该怎么去...

  • 将两个 64 位数字相乘

  • 两个 16 位十六进制数相乘

...使用汇编语言。

我只能使用寄存器 %eax、%ebx、%ecx、%edx 和堆栈。

编辑:哦,我在 x86 上使用 ATT 语法
EDIT2:不允许反编译成程序集...

0 投票
5 回答
7064 浏览

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 的大多数实现少字节”?
  • 它的适用性正在减弱吗?
0 投票
4 回答
4969 浏览

visual-c++ - 在 MSVC 中将扩展精度浮点数(80 位)转换为双精度(64 位)

在 MSVC win32/win64 中从扩展精度浮点数(80 位值,在某些编译器中也称为long double)到双精度(64 位)转换的最便携和“正确”的方法是什么?

MSVC 目前(截至 2010 年)假定这long doubledouble同义词。

我可能可以在内联 asm 中编写fld/fstp汇编程序对,但内联 asm 不适用于 MSVC 中的 win64 代码。我是否需要将此汇编代码移动到单独的 .asm 文件中?难道真的没有好的解决办法吗?

0 投票
2 回答
12745 浏览

c - gcc 是否支持 amd64 上的 128 位 int?

gcc 是否支持 amd64 上的 128 位 int?

如何定义它?

如何使用 scanf/printf 读/写它?

0 投票
2 回答
1941 浏览

bigint - XMM 寄存器可以用来做任何 128 位整数数学吗?

我的印象肯定不是但也许有一个聪明的把戏?谢谢。

0 投票
1 回答
5938 浏览

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

0 投票
1 回答
1159 浏览

floating-point - OCaml 中的 80 位扩展精度浮点

是否有 OCaml 库可以利用 IA-32 和 x86-64 架构上的 80 位扩展精度浮点类型?

我知道MPFR 绑定,但我理想的库会更轻量级。利用历史浮点指令将是理想的。

0 投票
2 回答
729 浏览

c - 从双精度参数开始的 80 位扩展精度计算的属性

这是插值函数的两种实现。参数u1总是在0.和之间1.

在具有 80 位long double的严格 IEEE 754 平台上,所有计算interpol_64()都根据 IEEE 754 双精度和interpol_80()80 位扩展精度进行。程序打印:

我对“函数返回的结果总是介于u2u3”的属性感兴趣。此属性为 false interpol_64(),如main()上面的值所示。

房产有机会成真interpol_80()吗?如果不是,反例是什么?如果我们知道这一点u2 != u3或它们之间有最小距离是否有帮助?是否有一种方法可以确定中间计算的有效宽度,在该计算中该属性可以保证为真?

编辑:在我尝试的所有随机值上,当中间计算在内部以扩展精度完成时,该属性保持不变。如果interpol_80()long double参数,构建反例相对容易,但这里的问题专门针对带double参数的函数。这使得建立一个反例变得更加困难,如果有的话。


注意:生成 x87 指令的编译器可能会为interpol_64()and生成相同的代码interpol_80(),但这与我的问题无关。

0 投票
1 回答
2665 浏览

haskell - 是否可以在 GHC/Haskell 中使用扩展精度(80 位)浮点运算?

标准的 Haskell's Double使用标准的双精度算术

data Double 双精度浮点数。希望这种类型在范围和精度上至少等于 IEEE 双精度类型。

GHC/Haskell 是否也在某个地方提供了扩展精度(80 位)浮点数,也许使用了一些外部库?

0 投票
2 回答
234 浏览

c++ - 返回浮点类型是否完全符合 IEEE-754 的函数?

我想编写一个函数来检查或float完全符合 IEEE-754 格式。我是说:doublelong double

我认为这std::numeric_limits<T>::is_iec559与此相对应,但它在我的 Linux 64 位上返回true,但在内部以Intel 格式编码。那么该怎么做呢?long doublesizeof(long double) = 16 bytes80-bit