跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:C 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
2.11.3 does_not_read_global_data
2.11.5 does_not_write_global_data
2.11.26 warn_missing_parameter_info
2.14.5 __FUNCTION__ 和 __PRETTY_FUNCTION__
2.18 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持
本节概述了 IEEE 754 浮点缺省运算,该运算是“不停止的”。下溢是“渐进的”。有关更多详细信息,请参见《数值计算指南》。
不停止意味着遇到除数为零、浮点下溢或无效操作异常时执行不会停止。例如,考虑以下算式,其中 x 为零,y 为正数:
z = y / x;
缺省情况下,z 设置为值 +Inf,执行不会停止。但是,如果设置 -fnonstd 选项,此代码会导致退出,如信息转储。
下例说明了渐进下溢的工作方式。假设您有下列代码:
x = 10; for (i = 0; i < LARGE_NUMBER; i++) x = x / 10;
第一次执行循环时,x 设置为 1;第二次执行循环时,设置为 0.1;第三次执行循环时,设置为 0.01,依此类推。最后,x 达到比较低的值,以致机器无法表示其值。下次循环运行时将出现什么情况?
假设可表示的最小数为 1.234567e-38
下次循环运行时,将通过去掉一位尾数并且指数减去 1 来修改该数,因此新值为 1.23456e-39,然后为 1.2345e-40,依此类推。此行为称为“渐进下溢”,它是缺省行为。在非标准模式下,不会发生这种“去位”情况,x 将被简单地设置为零。