Fortran 2003 标准内模块 IEEE_EXCEPTIONS、IEEE_ARITHMETIC 和 IEEE_FEATURES 支持采用建议的语言标准的新功能,从而支持 IEEE 算术和 IEEE 异常处理。
草案标准定义了一组查询函数、基本函数、种类函数、基本子例程和非基本子例程。后面的表中列出了这些函数和子例程。
要访问这些函数和子例程,调用例程必须包括
USE, INTRINSIC :: IEEE_ARITHMETIC, IEEE_EXCEPTIONS
有关详细信息,请参见 Fortran 标准 (http://www.j3-fortran.org)。
模块 IEEE_EXCEPTIONS 包含下列查询函数。
功能 |
说明 |
IEEE_SUPPORT_FLAG(FLAG[,X]) |
查询处理器是否支持异常。 |
IEEE_SUPPORT_HALTING(FLAG) |
查询处理器是否支持在出现异常后控制停止异常。 |
模块 IEEE_ARITHMETIC 包含下列查询函数。
功能 |
说明 |
IEEE_SUPPORT_DATATYPE([X]) |
查询处理器是否支持 IEEE 算术。 |
IEEE_SUPPORT_DENORMAL([X]) |
查询处理器是否支持非规范化的数值。 |
IEEE_SUPPORT_DIVIDE([X]) |
查询处理器是否支持按 IEEE 标准规定的精度进行除法运算。 |
IEEE_SUPPORT_INF([X]) |
查询处理器是否支持 IEEE 无穷大。 |
IEEE_SUPPORT_IO([X]) |
查询处理器是否支持在格式化输入/输出期间进行 IEEE 基本转换舍入。 |
IEEE_SUPPORT_NAN([X]) |
查询处理器是否支持 IEEE 非数值。 |
IEEE_SUPPORT_ROUNDING(VAL[,X]) |
查询处理器是否支持特定的舍入模式。 |
IEEE_SUPPORT_SQRT([X]) |
查询处理器是否支持 IEEE 平方根。 |
IEEE_SUPPORT_STANDARD([X]) |
查询处理器是否支持所有的 IEEE 功能。 |
模块 IEEE_ARITHMETIC 包含参数为实数且满足特定条件(即下表中实数参数 X 和 Y 满足 IEEE_SUPPORT_DATATYPE(X) 和 IEEE_SUPPORT_DATATYPE(Y) 为 true)的下列基本函数。
功能 |
说明 |
IEEE_CLASS(X) |
IEEE 类 |
IEEE_COPY_SIGN(X,Y) |
IEEE 复制符号函数 |
IEEE_IS_FINITE(X) |
确定值是否为有限值。 |
IEEE_IS_NAN(X) |
确定值是否为 IEEE 非数值。 |
IEEE_IS_NORMAL(X) |
确定值是否正常。 |
IEEE_IS_NEGATIVE(X) |
确定值是否为负数。 |
IEEE_LOGB(X) |
采用 IEEE 浮点格式的无偏指数。 |
IEEE_NEXT_AFTER(X,Y) |
返回趋向 Y 的下一个可表示的 X 邻数。 |
IEEE_REM(X,Y) |
IEEE REM 余数函数 X - Y*N,其中 N 是最接近 X/Y 精确值的整数。 |
IEEE_RINT(X) |
根据当前的舍入模式舍入为整数值。 |
IEEE_SCALB(X,I) |
返回 X*2**I |
IEEE_UNORDERED(X,Y) |
IEEE 无序函数。如果 X 或 Y 为 NaN,则为 true,否则为 false。 |
IEEE_VALUE(X,CLASS) |
生成 IEEE 值。 |
模块 IEEE_ARITHMETIC 包含以下转换函数:
功能 |
说明 |
IEEE_SELECTED_REAL_KIND([P,][R]) |
具有指定精度和范围的 IEEE 实数的种类类型参数值。 |
模块 IEEE_EXCEPTIONS 包含下列基本子例程。
子例程 |
说明 |
IEEE_GET_FLAG(FLAG,FLAG_VALUE) |
获取异常标志。 |
IEEE_GET_HALTING_MODE(FLAG,HALTING) |
获取异常的停止模式。 |
模块 IEEE_EXCEPTIONS 包含下列非基本子例程。
子例程 |
说明 |
IEEE_GET_STATUS(STATUS_VALUE) |
获取浮点环境的当前状态。 |
IEEE_SET_FLAG(FLAG,FLAG_VALUE) |
设置异常标志。 |
IEEE_SET_HALTING_MODE(FLAG,HALTING) |
控制异常持续或停止。 |
IEEE_SET_STATUS(STATUS_VALUE) |
恢复浮点环境的状态。 |
模块 IEEE_ARITHMETIC 包含下列非基本子例程。
子例程 |
说明 |
IEEE_GET_ROUNDING_MODE(ROUND_VAL) |
获取当前的 IEEE 舍入模式。 |
IEEE_SET_ROUNDING_MODE(ROUND_VAL) |
设置当前的 IEEE 舍入模式。 |