19得票6回答
在典型项目中,-ffast-math能否安全使用?

在回答一个问题时,我建议使用 -ffast-math,但有人评论说这很危险。 我的个人感觉是,在科学计算以外的领域,它是可以使用的。我也认为严肃的金融应用程序使用固定点而不是浮点。 当然,如果你想在你的项目中使用它,最终的答案是在你的项目上进行测试,并查看它对项目的影响有多大。但我认为,那...

11得票1回答
在加法运算后舍入浮点数(保护位、粘滞位和舍入位)

我在网上还没有找到一个好的解释,所以希望这里的某个人能为我解释一下。 我想手工相加两个二进制数: 1.0012 * 22 1.010,0000,0000,0000,0000,00112 * 21 我可以很容易地将它们相加,在去规格化第一个数字后相加,然后重新规格化它们之后得到以下结果。 ...

164得票6回答
为什么NaN不等于自身?

相关的IEEE标准定义了一个数字常量NaN(不是数值),并规定NaN应该与自己不相等。为什么呢? 我熟悉的所有语言都实现了这个规则。但是,它经常会引起重大问题,例如当NaN存储在容器中时出现意外行为,当NaN在正在排序的数据中时等等。更不用说,绝大多数程序员期望任何对象都等于自己(在他们了解...

23得票8回答
提取Javascript数字的指数和尾数

有没有一种相对快速的方法可以从JavaScript中提取数字的指数和尾数? 据我所知,在JavaScript中无法获取Number背后的位,这使我觉得我正在寻找一个因数分解问题:找到m和n,使得给定的k满足2^n * m = k。由于整数因式分解属于NP问题,我只能认为这将是一个相当困难的问...

7得票2回答
检查一个数字是否可以精确表示为`f32`。

我想知道值为1/256、2/256、3/256、...、254/256和255/256是否可以精确地表示为f32。现在,聪明的人会思考浮点数的工作原理并找出答案。但我想在程序中检查一下。我想要检查的所有数字都是分数,而且我控制这些值(即没有用户输入)。 我从这里开始: for n in 1...

8得票3回答
如何在Lua中测试-1.#IND(不确定)?

问题的不相关解释: 我在调用Lua format时遇到了一个错误: 整数溢出,尝试存储-1.#IND 变量的 type(n) 确实是一个 number,我可以将其格式化为字符串(即 %s),但它不是一个数字,例如: print(string.format("value=%s, ty...

27得票8回答
下一个更高/更低的IEEE双精度数

我正在进行高精确度的科学计算。在寻找各种影响的最佳表示时,我不断想要获取下一个更高(或更低)可用的双精度数。实质上,我想做的是将双精度数的内部表示中的最低有效位加一。 问题在于IEEE格式并不完全统一。如果使用低级代码并实际将一添加到最低有效位,则结果可能不是下一个可用的双精度数。例如,它可...

9得票5回答
为什么浮点变量会以一种奇怪的方式截取小数点后面的数字来保存值?

我有这样一行简单的代码: float val = 123456.123456; 当我打印这个值或查看作用域时,它存储的值为123456.13。 好吧,这是可以理解的,它不能在只有4个字节的情况下存储小数点后面的所有数字,但为什么它会变成小数点后13位呢?难道不应该是12位吗? (使用...

8得票2回答
Kahan算法中使用加法而非减法

以下是维基百科上的 Kahan 求和算法: 这是Kahan求和算法: function KahanSum(input) var sum = 0.0 var c = 0.0 for i = 1 to input.length do y = input[...

11得票1回答
浮点运算和可重现性

IEEE-754算术在不同平台上是可复现的吗?我正在测试使用随机数的 R 代码,我认为在所有测试的平台上设置随机数生成器的种子将使测试可复制,但对于生成指数分布随机数的 rexp() 函数似乎并非如此。以下是在32位Linux上的结果:options(digits=22) ; set.seed...