问题标签 [floating-point-exceptions]
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.
c - C代码中的浮点异常
我正在计算 1<=n<=32
它仅在 1<=n<=31 时有效,如何将其更改为 n=32?当我在 xcode 中测试它的 n=32 情况时,它会触发调试器并显示线程 1 exc_arithmetic(code=exc_i386_div....
提前谢谢你。
c++ - VS2015 vs VS2013中的不同优化导致浮点异常
我有一个在从 VS2013 过渡到 VS2015 期间出现的小问题示例。在 VS2015 中进一步提到的代码示例会导致浮点无效操作。
这仅在发布模式下发生,因此可能是由不同的优化引起的。这段代码有问题还是 VS 2015 中的错误?
在整个代码库中很难找到这样的问题,所以我正在寻找一些系统修复而不是解决方法(例如使用不同的变量而不是i哪个有效)
我还检查了生成的汇编代码,似乎在 VS2013 中它使用整个 128 位注册表在一个分区中执行 4 个浮点操作。在 VS2015 中,它似乎只执行了 2 个浮点操作,而注册表的其余部分为零(或一些垃圾),这可能会引入此异常。
导致异常的指令如图所示。
任何帮助将不胜感激。谢谢。
c++ - Floating point exception?
Very straight forward. The code below is from one of my functions:
When I call it, I get a floating point exception. Except that I am working with no floating points. So what's happening exactly?
c - 异常浮点异常(核心转储) C 错误
我目前是一名学生,试图将阶乘打印为素数乘以某些指数,如下所示:
5!= (2^3) (3^1) (5^1)
但是,我不断收到一个不寻常的错误,该错误发生在使用 scanf 检索我的输入之后(顺便说一下,我非常感谢有人向我展示如何从外部文件中检索多个输入以使用输入重定向来执行此操作,因为这就是我们应该为此检索我们的输入)。
无论如何,我假设这个错误在我的 while 循环规范中的某个地方。我将不胜感激任何帮助/提示/指针。谢谢!
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.
c - 在运行时明确浮点异常
假设我有一个显示浮点溢出的 C 程序,如下例所示。
我的目标是在运行时捕获异常。我有数千个 C 程序,所以我需要以自动化的方式来完成。我想知道是否存在用于我的目的的 C 命令行选项?
预期的是:
gcc myprog.c --the_option_wanted
==> 这个命令预计编译 myprog.c 没有任何问题./a.out
==> 该命令运行myprog.c,运行时浮点异常预计会变成警告或错误。
casting - C++ Builder 10.1 中双精度浮点异常-> 无符号 __int64 类型转换
我在 C++ Builder 10.1 Berlin 中遇到了某些 double 到 unsigned __int64 类型转换的问题,抛出浮点无效操作异常($C0000090)。
我的应用程序允许用户输入,因此我需要能够处理任何值,但为简单起见,让我们使用以下示例:
虽然我可以在 try/catch 中处理此异常,但这似乎破坏了 FPU 寄存器堆栈,并且后续浮点操作将生成浮点堆栈检查异常。
以下问题报告描述了一个类似的问题并有一个潜在的解决方法: http://qc.embarcadero.com/wc/qcmain.aspx/qcmain.aspx?d= 119745
如果可能的话,我想防止初始浮点异常。抛开精度损失不谈,存储在 double 中的值在有效的无符号 __int64 范围内,所以我无法理解导致异常的原因。
在类型转换/转换或异常处理方面,我可以做些什么不同的事情吗?
附带说明一下,上面的代码片段在 Visual Studio 中运行良好,并将 uhValue 设置为 9223372036854775808。
谢谢!
assembly - x86 程序集:除法浮点异常除以 11
我试图除以859091
得到11
商和余数,但我在线得到浮点异常:
div bx
这是我的SASM代码:
c - C - 浮点异常(核心转储)
该功能应该逐个像素地通过将每个像素的颜色转换为 2n+1“半径”内周围颜色的平均值来模糊图像。
(它跳到下一个像素的部分已经实现,不用担心)。
我成功编译了这段代码:
但是当我运行代码时,出现以下异常:
有谁知道为什么?
fortran - SIGFPE 错误与 gfortran 4.8.5 处理
我正在使用在 Ubuntu 16.04 LTS 上使用 gfortran 4.8.5 版编译的计算流体动力学软件。该软件可以使用单精度或双精度以及 -O3 优化选项进行编译。由于我没有必要的计算资源来以双精度运行 CFD 软件,因此我使用单精度和以下选项对其进行编译
我在包含 asin 函数的代码行上收到 SIGFPE 错误-
换句话说,inverse sin 函数和此代码是双重嵌套 FOR 循环的一部分,其中 jp 和 ip 作为索引。目前软件人员由于其他各种原因无法帮助我,所以我正在尝试自己调试。SIGFPE 错误仅在单精度编译而不是双精度编译中观察到。
在失败的代码行(即 asin 函数调用)之前,我在代码中插入了以下打印语句。这会帮助我解决我面临的问题吗?这段代码针对每个时间步执行,并且在一系列时间步之后发生。或者,我可以采取哪些其他步骤来帮助我解决此问题?将“精度”添加到编译器标志有帮助吗?
编辑 我看了一下这个答案Unexpected behavior of asin in R,我想知道我是否可以在 fortran 中做类似的事情,即使用 max 函数。如果它低于 -1 或大于 1,则以适当的方式四舍五入。如何使用 gfortran 使用 max 函数来做到这一点?
在我的桌面上,以下程序可以毫无问题地执行(即它能够正确处理带符号的零),因此我猜测 SIGFPE 错误发生在参数大于 1 或小于 -1 的情况下。