问题标签 [long-double]

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 投票
4 回答
734 浏览

objective-c - 目标 C:创建 Long Double 使用 Decimal 方法

如何创建以下方法?

  • 我曾尝试使用 modf(n, 1) 或 modf(n, 2) 但它们都返回错误“传递 modf 的参数 2 使指针从整数而不进行强制转换。

方法如下:

0 投票
0 回答
932 浏览

ruby - 红宝石中的128位长双打?

在我的 ruby​​ 代码中,我正在与一个服务器对话,该服务器以二进制格式的字符串形式响应 128 位长双精度(“128 位长双精度”、“binary128”或“四倍精度浮点”)。

有没有办法解压缩这些字符串以在 ruby​​ 中使用?根据String.unpack上的文档,最大精度似乎是两倍。是否有可能在 ruby​​ 中表示这些 128 位浮点数?

0 投票
2 回答
537 浏览

c++ - 检测嵌入式系统上的长双溢出

我将在嵌入式系统上的 C++ 代码中使用大数字。幸运的是,编译器可以识别长双精度数。
我不能使用标准库、boost库、gnu数学库等。而且系统没有内置float math cpu。
现在如何检测长双溢出?

0 投票
1 回答
1120 浏览

gdb - 执行期间的疯狂行为

我一直在用 gcc 做一些内联汇编。一切都几乎正常工作,直到一些让我感到困惑的行为。我正在评估一个有理多项式,但需要使用 80 位常量。生成的代码似乎很完美,但在执行时,80 位系数之一在加载到 fpu 时加载为 0,即使在内存中字节值不为零(我认为它是有效的 80 -bit 实数,当使用 masm 生成的代码运行时,完全相同的常量加载正常)。这是 gdb 会话的输出:

所以请注意:在 stepi 之前,我们即将执行“fldt 0x4046e6”,并且 0x4046e6 处的内存转储清楚地表明它不为零。然而,“fldt 0x4046e6”导致将零加载到 st0。之前的所有 fldt 指令都运行良好;常量很好(masm 中具有相同常量的相同代码可以完美运行)。对于那些感兴趣的人,这里是常量的来源:

这是 poly4 函数的来源:

这是无效负载之前 FPU 的状态:

我想知道上面状态字中“C1”标志的含义是什么——我找不到这方面的文档。这是失败的 fldt 之后的状态(由 stepi 执行):

好的,我现在修改了代码,使 0x00402db5 和 0x00402dbf 处的指令相同。第一个成功,第二个失败。这是一个显示反汇编代码的 gdb 会话,以及在执行两条相同指令之前的 fpu 状态。状态中唯一显着的区别是在执行第二条 fldt 指令之前的状态中存在 C1 标志:

0 投票
2 回答
1462 浏览

c - 长双数学库实现?

explC99 长双精度数学库函数( 、cosllogl等)有哪些可用的可移植实现(如果有)?我查看了 fdlibm(基于 Sun)、NetBSD(基于 UCB)等来源,但没有看到它们。

0 投票
1 回答
1225 浏览

c++ - 支持长双打的最爱/最佳 AX=B 求解器?

我希望反复敲击 X=B(A^-1) 的问题。也就是说,求解一个线性系统。对于 C++,哪些数值求解器支持 128 位长双精度(四边形)?

使用 C 样式数组是一个主要优点,因为我所有的 2D 数据都存储为单个 std::vector。

我希望使用 GCC 或 ICC 在 linux 上编译代码。

0 投票
4 回答
1010 浏览

c++ - “long double”有一个单词的名字吗?

许多新的 C++ 数据类型名称都有一个单词名称,例如:

  • int16_t 而不是带符号的 short int
  • int64_t 而不是有符号的 long long int
  • ...

“long double”有一个单词的名字吗?

0 投票
3 回答
1102 浏览

.net - 在 .NET 中转换 long double

我必须将一些 C 代码(在 Linux 机器上运行)转换为 .Net,并发现一些带有 long double 的操作。它们不是特殊运算,只是一些以很多小数结尾的乘法和除法,似乎只是因为它的大小而使用了该类型。

为了转换代码,你会做什么?我正在考虑将值相乘并在最后除以查看它是否有帮助,因为代码无论如何都会在最后返回短值,而且我不知道原始二进制文件是否确实使用了所有长double 可以提供,或者如果它只是在引擎盖下使用一个常见的 64 位双精度。

如果您认为这不是一个好主意,您是否知道任何可用于包装和模拟 long double 的类或结构?在 C/C++ 中制作包装器并从 .Net 中调用它是“不可能的”。

0 投票
1 回答
10412 浏览

c++ - 微软为何放弃 long double 数据类型?

前段时间我写了一个程序,它使用了一些阶乘函数。我使用 long double 数据类型来支持“相对”大数字。

现在,我从代码块更改为 Visualstudio 2010,我想知道为什么我的程序不再工作,直到经过一些研究后我意识到 MS 已经放弃了 long double 数据类型。这有什么特别的原因吗?对我来说,这看起来像是技术方面的倒退。

有什么替代品可以使用吗?(我也会对 boost 库中的替代方案感到满意)。

0 投票
4 回答
2306 浏览

c++ - 应该使用哪个函数将字符串转换为长双精度?

请注意,一般来说,double与 不同long double

strtod将字符串转换为double,但应该使用哪个函数将字符串转换为 long double?