问题标签 [underflow]

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 投票
1 回答
1760 浏览

c++ - C ++下溢示例?

我目前正在学习 C++ 入门课程,教授给了我们以下示例:

现在,在他的机器上,TEST 作为整数的最大值返回,因为他强制下溢。但在我的机器上,它返回为 0。

这种行为编译器依赖还是什么?换句话说,为什么我的机器返回 0 而他的机器返回最大值?

0 投票
2 回答
4090 浏览

c - When does underflow occur?

I get into a situation where calculating 1.77e-308/10 triggers an underflow exception, but calculating 1.777e-308/10 does not. This is strange because:

Underflow occurs when the true result of a floating point operation is smaller in magnitude (that is, closer to zero) than the smallest value representable as a normal floating point number in the target datatype (from Arithmetic Underflow, Wikipedia)

In other words, if we calculate x/y where both x and y are double, then underflow should occur if 0 < |x/y| < 2.2251e-308 (the smallest positive normalized double is 2.2251e-308). In theory, therefore, both 1.77e-308/10 and 1.777e-308/10 should trigger an underflow exception. The theory contradicts with what I have tested with the C program below.

To compile the program, I used gcc program.c -lm; I also tried Clang, which gave me the same result. Any explanation?

[Edits] I have shared the code above via this online IDE.

0 投票
1 回答
1507 浏览

c++ - C++ long long int 上溢/下溢

我正在制作一个解决基本数学运算(*, /, +, -)的小程序,并且我正在使用long long int(64位数字),所以我可以对大数字进行数学运算。

但有一个问题。我可以检查操作数是否没有超过或低于限制(使用LONG_LONG_MAXand LONG_LONG_MIN)。但是当我(例如)将两个非常大的数字相乘(导致 溢出long long int)时,LONG_LONG_MAX检查不起作用。相反,结果是 -4。

C/C++ 中是否有机会检查?例如一些尝试捕获构造?

0 投票
2 回答
1501 浏览

floating-point - 实数相乘时如何避免下溢?

当我像

我知道该underflow选项并不总是一个好主意,但我想知道是否可以使用此选项进行乘法运算。事实上,在下面的示例中,我知道可能会发生下溢,但也许我不知道我的代码中有其他情况。这就是为什么我想尽可能保留这个选项。

这是一个示例,其中我为矩阵的每个 x,y 索引计算向量 u;组成这些向量的 2 个值介于 0 和 1 之间。然后我计算其范数的平方。

非常合乎逻辑,由于这个平方运算,我的值会下溢。因为,这些非常小的值对我来说可以被认为是零。有没有underflow比使用if比较更好的方法?

0 投票
1 回答
547 浏览

python - Python:pandas.DataFrame.comprod() 和 numpy.comprod() 是否处理数值下溢?

具体来说,当将大量小数相乘时,这些累积乘积函数是否以稳健的方式实现pandas并处理下溢?numpy例如,他们是否使用 log-sum-exp 技巧?

谢谢。

0 投票
1 回答
1387 浏览

c++ - c++ 在减法期间转换为字节(unit8_t)不会像我预期的那样强制下溢;输出为 int16_t;为什么?

请注意,它byte是 8 位类型 (uint8_t),而 unsigned int 是 16 位类型 (uint16_t)。

以下不会产生我期望的结果。我希望它会下溢并且结果始终是 uint8_t,但它会变成有符号的 int (int16_t)!!!!为什么?

特别关注以下代码行:(byte)seconds - tStart 我希望它的输出总是一个无符号的8 位值 (uint8_t),但它输出的是一个有符号的16 位值:int16_t。

如何使减法的结果始终为 uint8_t 类型?

样本输出:

第 1 列(byte)seconds第 2 列tStart第 3列是第 1 列减去第 2 列 ( (byte)seconds - tStart) 请注意,一旦第 1 列从 255 溢出到 0,第 3 列变为负数 (int8_t)。我希望(并希望)它保持正数(无符号) 8 位值改为下溢。

这是typeNum上面的函数:

0 投票
1 回答
636 浏览

python - 涉及非常小的数字的可能性

我有一个很大的可能性向量,都在范围内(0 到 1),但所有数字都比 1 小很多。我需要计算这些向量乘积的最大可能性。

我怎样才能避免下溢,我的装配工在我所有的尝试中都失败了。我采取的第一步是将数组除以数组中的最大值。我正在最大化采样 n 次的两个概率之和的乘积,最终我需要根据 BIC 最小化:

无论如何L是一组非常小的形式的数组

这是一个带有两个参数的示例ab我改变了数组的大小n,每个参数p都是< 1.

0 投票
4 回答
4788 浏览

numerical - Logsoftmax 稳定性

我知道如何通过添加元素 -max _i x_i 来使 softmax 稳定。这避免了上溢和下溢。现在,记录这个可能会导致下溢。log softmax(x) 可以计算为零,导致 -infinity。

我不知道如何解决它。我知道这是一个常见的问题。我看了几个答案,我不明白。但我仍然对如何解决这个问题感到困惑。

PS:如果你提供一个简单的例子,那就太棒了。

0 投票
1 回答
1261 浏览

c# - C# ulong 允许上溢/下溢

我对这种ulong类型的行为有点困惑。我理解它是一个64 位整数,用于正数(最大值 18,446,744,073,709,551,615)。我刚开始使用它是因为我需要非常大的正数,但是围绕潜在的负数有一些我不理解的奇怪行为。

这是怎么回事?为什么一些下溢错误被捕获而其他错误甚至不抛出异常?我可以检测到这些吗?

我专注于通过下溢来获得负数,但是在获得大于最大值和上溢的数字时,我也看到过类似的情况。

我不确定它们在技术上是错误还是异常,所以如果我使用了不正确的术语,请原谅我

0 投票
1 回答
143 浏览

algorithm - 在计算密度时训练具有下溢的连续密度 HMM

我已经按照 Rabiner 教程针对单个观察序列(基于 MFCC 数据)实现了 HMM 的评估和训练算法。对于前向和后向算法,我还包括了处理下溢问题的建议缩放。对于 Baum-Welch 优化,我相应地计算概率为

Baum-Welch 优化似乎在几次迭代中都能正常工作,直到我在计算密度时遇到下溢。我使用 Matlab 内置函数mvnpdf来计算密度。经过几次迭代后,Matlab 开始将最低密度设置为 0。对于 Baum-Welch 优化中的以下计算,Emission/PDF-Matrix 中的零条目产生 NaN,进一步优化失败。

对于如何规避或避免此问题的任何帮助,我将不胜感激。