1

我正在调试许多Fortran文件中的许多计算的模拟。我习惯于查看一些浮点异常(-1。#QNB或1.#QNAN),其中涉及除零的操作或超出浮点数的最大大小的操作。我假设-1。#IO意味着无效操作,但我不确定数学上会导致这种情况而不是QNB或QNAN或QINF。什么导致了浮点异常“1.#IO”

什么会导致异常-1。#IO?

+0

CVF 6 is编译器。模拟是每秒数千行,我不确定异常第一次出现在哪里,但它将-1.#IO传播到所有其他子例程,所以最终我有成千上万的变量在该异常爆发之前发生。 – Alex

+0

请向我解释这个问题与编程无关。 – Alex

+1

只需除零:https://blogs.msdn.microsoft.com/oldnewthing/20130228-01/?p = 5103 –

回答

1

根据该IEEE 754 Standard for Floating Point Operations,无效操作被发信号

当NaN或无限数不能在目标格式来表示,这不能以其它方式 指示[...]当数字操作数将转换为目标格式范围之外的整数 ,如果 不能以其他方式表示,则发出无效操作异常。

This page给出了几个例子:

  • 零*无穷
  • 零/零
  • 无穷/无穷远
  • 负操作数
  • [和少数的平方根更]
+0

很好的答案,谢谢 – Alex