Intel® Fortran Compiler 16.0 User and Reference Guide

Data Type of Numeric Expressions

If every operand in a numeric expression is of the same data type, the result is also of that type.

If operands of different data types are combined in an expression, the evaluation of that expression and the data type of the resulting value depend on the ranking associated with each data type. The following table shows the ranking assigned to each data type:

Data Type

Ranking

LOGICAL(1) and BYTE

Lowest

LOGICAL(2)

.

LOGICAL(4)

.

LOGICAL(8)

.

INTEGER(1)

.

INTEGER(2)

.

INTEGER(4)

.

INTEGER(8)

.

REAL(4)

.

REAL(8)1

.

REAL(16)

.

COMPLEX(4)

.

COMPLEX(8)2

.

COMPLEX(16)

Highest

1 DOUBLE PRECISION

2 DOUBLE COMPLEX

The data type of the value produced by an operation on two numeric operands of different data types is the data type of the highest-ranking operand in the operation. For example, the value resulting from an operation on an integer and a real operand is of real type. However, an operation involving a COMPLEX(4) or COMPLEX(8) data type and a DOUBLE PRECISION data type produces a COMPLEX(8) result.

The data type of an expression is the data type of the result of the last operation in that expression, and is determined according to the following conventions:

These rules also generally apply to numeric operations in which one of the operands is a constant. However, if a real or complex constant is used in a higher-precision expression, additional precision will be retained for the constant. The effect is as if a DOUBLE PRECISION (REAL(8)) or REAL(16) representation of the constant were given. For example, the expression 1.0D0 + 0.3333333 is treated as if it is 1.0D0 + dble(0.3333333).