Oracle® Solaris Studio 12.4:数值计算指南

退出打印视图

更新时间: 2015 年 1 月
 
 

4.2.1 表 4-1 的注释

  1. 无序比较:对于任何浮点值对来说,即使它们的格式不同,也可以对它们进行比较。可能有四种互斥关系:小于、大于、等于或无序。无序意味着至少有一个操作数为 NaN(not a number,非数)。

    每个 NaN 可与任何值(包括它本身)进行“无序”比较。 下表显示在关系为无序时,由哪一种谓词导致无效运算异常。

    数学谓词
    C、C++ 谓词
    Fortran 谓词
    无效表达式(如果无序的话)
    =
    ==
    .EQ.
    no
    !=
    .NE.
    no
    >
    >
    .GT.
    yes
    >=
    .GE.
    yes
    <
    <
    .LT.
    yes
    <=
    .LE.
    yes
  2. 无效转换:尝试将 NaN 或无穷大转换为整数,或者在从浮点格式转换时出现整数溢出。

  3. IEEE 单精度、双精度和扩展格式能表示的最小正规数分别为 2-126、2-1022 和 2-16382。有关 IEEE 浮点格式的说明,请参见Chapter 2, IEEE 运算

  4. 下表列出了针对溢出禁用陷阱时的缺省结果。以下结果取决于舍入模式和中间结果的符号。

    舍入模式
    最近
    +∞
    -∞
    +∞
    -max
    向下
    +max
    -∞
    向上
    +∞
    -max

x86 浮点环境提供另一个未在 IEEE 标准中提到的异常:非正规操作数异常。当针对次正规数执行浮点运算时,会出现该异常。

异常的优先顺序如下所示:无效(优先级最高)、溢出、除、下溢、不精确(优先级最低)。 在基于 x86 的系统上,非正规操作数异常在所有异常中的优先级最低。

能够在单个运算中同时发生的标准异常只有不精确的溢出和不精确的下溢这两种组合。在基于 x86 的系统上,非正规操作数异常可以与五个标准异常中的任意一个同时发生。如果启用了对溢出、下溢和不精确的捕获,则溢出和下溢陷阱的优先级高于不精确陷阱;在基于 x86 的系统上,溢出、下溢和不精确陷阱的优先级都高于非正规操作数陷阱。