问题标签 [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 回答
495 浏览

python - 为什么使用 NumPy 复杂的浮点除法会出现奇怪的下溢?

考虑这段代码:

无论我怎么看,下溢似乎都没有意义。就像维基百科的,

下溢是计算机程序中的一种情况,其中计算结果的绝对值小于计算机实际存储在其 CPU 内存中的数量。

但很明显,计算机能够将数字存储在相关值的大致附近,因此该定义似乎与我在这里看到的行为完全不一致。

有人可以解释为什么其中一些会出现下溢,而另一些则不会?
这是正确的行为还是错误?

0 投票
2 回答
2114 浏览

c++ - 在 C++ 中计算 log-sum-exp 函数

c++标准库中是否有计算指数总和对数的函数?如果没有,我应该如何编写自己的?您是否有任何未在此 wiki 文章中提及的建议?

我特别关心总和将下溢的可能性。这是您对绝对值较大的负数求幂的情况。我正在使用 c++11。

0 投票
2 回答
6412 浏览

python - 在 Python 中防止浮点除法中的下溢

假设xy都是非常小的数字,但我知道 的真实值x / y是合理的。

最好的计算方法是x/y什么?特别是,我一直在这样做np.exp(np.log(x) - np.log(y),但我不确定这是否会有所作为?

0 投票
0 回答
48 浏览

php-7 - underflow in php 7 with int 32 is return 0

I used the following code to print the sum of two integer numbers with underflow:

The result with php7 and HW support int32 is:

The result with php 5.5 and HW support int32 is:

Any reason why I got 0 in php 7?

0 投票
3 回答
4168 浏览

java - Java Float 和 Double 数据类型中的上溢和下溢

我创建了以下代码来测试 Float 和 Double Java 数字数据类型的下溢和上溢:

有人可以解释我在结果中看到的奇怪值: 在此处输入图像描述

当我使用 byte、short、int 和 long 进行类似的测试(下面的代码)时:

结果看起来如预期:

在此处输入图像描述

有人可以解释 Java float 和 double 中的溢出和下溢吗?为什么我会看到上述结果?

0 投票
0 回答
38 浏览

c++ - 发生下溢时的精度损失级别

我了解什么是下溢以及基于的下溢何时发生。

但是,我的问题是,鉴于发生了下溢,是什么决定了精度损失的数量?

我正在用 C++ 计算一个数组,我确实看到了一些数值错误,例如1.333e-18数组实际上应该0无处不在。但是,整个数组的数值误差是不同的。是否有确定精度损失量的规则?

0 投票
1 回答
50 浏览

javascript - 意外下溢

当我在 CodePen 中运行此代码时,我进入控制台:-1.4626799636897467 和 true,我认为这意味着存在下溢。但是,ρ 的值应该是 k*10^-10 之类的东西,其中 k 在 2000 左右是常数。由于 Javascript 中可以表示的最小正数是 5e-324,比我的值小得多,为什么要我得到一个下溢?如果它不是下溢,我不明白正数的总和如何导致负数......

注意:我使用此处提供的信息来检查下溢:如何在 JavaScript 算术运算中检测数字上溢/下溢?JavaScript MIN_VALUE 属性

0 投票
1 回答
471 浏览

fortran - 删除写语句导致我的程序崩溃

我的代码中出现了一些奇怪的问题,而且我以前从未遇到过这样的问题。我有一个程序可以计算两个物体在它们自己的重力下和在 do-loop 内运行,我用它来计算它们随时间的运动,我有一个 write 语句将数据写入文件以供稍后绘制。但是,我最近想删除 write 语句,但是当我删除它时,程序在一些计算后崩溃,数据被 NaN 填充。我将在下面添加几行。

我将此循环存储在子例程中以供参考,但在我制作的其他程序之前从未出现过问题。我尝试更改无效的单元号。我已经停止传入数据文件字符参数,只是在子例程中将文件定义为“data.txt”,但它不起作用。我尝试将其复制为纯文本并使用 gfortran 重新编译,但没有成功。我确实使用 nagfor 进行了编译,并且出现了下溢错误,并设法在崩溃之前计算了更多的时间步长,但是当我删除涉及 unit=100 的行的注释(标有 (#))时,该错误消失了。我什至尝试过重写整个程序,看看我是否遗漏了一些东西,但即使在没有 open() 语句的情况下重写时,我也会遇到这个问题。如果这可能是一个问题,我确实在模块中存储了一些常量,这些常量是通过子例程输入的?很抱歉,如果这措辞不好,但我只是想知道是否有人以前在 Fortran 中遇到过这个问题,如果有,我该如何解决?

谢谢!

编辑:我使用 valgrind 来帮助定位问题。(之前使用 -g 标志编译)并且这给出了这个重复错误

我已经为子例程添加了一个接口,并在子例程中放置了虚拟变量,而不是使用主体中的相同变量名。这并没有解决问题。但是,我注意到的一件事是,如果我遵守优化标志 (-O3),错误就会消失,并且会在指定的总时间内运行。这是否表明有任何特定错误?

第二次编辑:我在编译时添加了输出gfortran -Wall -g -fcheck=all -fbacktrace

0 投票
2 回答
301 浏览

python - 以数值稳定的方式评估 log(1 - normal_cdf(x))

如何以log(1 - normal_cdf(x))数值稳定的方式进行评估?这里,normal_cdf是标准正态分布的累积分布函数。

例如,在 Python 中:

给与-inf因为几乎等于RuntimeWarning: divide by zero encountered in log。有没有这样的功能可以避免数值下溢?norm.cdf(10)1logsumexp

0 投票
3 回答
2951 浏览

c - C中的无符号整数下溢

我在网站上看到了多个解决无符号整数上溢/下溢的问题。大多数关于下溢的问题都涉及将负数分配给无符号整数。我不清楚的是当unsigned int从另一个中减去一个时会发生什么,unsigned int例如a - b结果是否定的。该标准的相关部分是:

涉及无符号操作数的计算永远不会溢出,因为无法由结果无符号整数类型表示的结果会以比结果类型可以表示的最大值大一的数字为模减少。

在这种情况下,您如何解释“减少”?这是否意味着将UINT_MAX+1添加到否定结果中,直到它是>= 0

我看到这个问题解决了要点(基本上说标准选择谈论溢出,但关于的要点也适用于下溢)但我仍然不清楚:

说结果a-b-1;根据标准,操作-1%(UINT_MAX+1)将返回(如此-1解释);所以我们回到了我们开始的地方。

这可能过于迂腐了,但是这个是否意味着数学模而不是 C 的计算模?