Sun Studio 12:Fortran 库参考

2.2.1 IEEE 算术和异常模块

Fortran 2003 标准内模块 IEEE_EXCEPTIONSIEEE_ARITHMETICIEEE_FEATURES 支持采用建议的语言标准的新功能,从而支持 IEEE 算术和 IEEE 异常处理。

草案标准定义了一组查询函数、基本函数、种类函数、基本子例程和非基本子例程。后面的表中列出了这些函数和子例程。

要访问这些函数和子例程,调用例程必须包括

USE, INTRINSIC :: IEEE_ARITHMETIC, IEEE_EXCEPTIONS

有关详细信息,请参见 Fortran 标准 (http://www.j3-fortran.org)。

2.2.1.1 查询函数

模块 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 功能。 

2.2.1.2 基本函数

模块 IEEE_ARITHMETIC 包含参数为实数且满足特定条件(即下表中实数参数 XY 满足 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 无序函数。如果 XY 为 NaN,则为 true,否则为 false。

IEEE_VALUE(X,CLASS)

生成 IEEE 值。 

2.2.1.3 种类函数

模块 IEEE_ARITHMETIC 包含以下转换函数:

功能 

说明 

IEEE_SELECTED_REAL_KIND([P,][R])

具有指定精度和范围的 IEEE 实数的种类类型参数值。 

2.2.1.4 基本子例程

模块 IEEE_EXCEPTIONS 包含下列基本子例程。

子例程 

说明 

IEEE_GET_FLAG(FLAG,FLAG_VALUE)

获取异常标志。 

IEEE_GET_HALTING_MODE(FLAG,HALTING)

获取异常的停止模式。 

2.2.1.5 非基本子例程

模块 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 舍入模式。