Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 7/13/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Constant Expressions

A constant expression is an expression that you can use as a kind type parameter, a named constant, or to specify an initial value for an entity. It is evaluated when a program is compiled.

In a constant expression, each operation is intrinsic and each primary is one of the following:

  • A constant or subobject of a constant

  • A specification inquiry where each designator or function argument is one of the following:

    • A constant expression

    • A variable whose properties inquired about are not assumed, deferred, or defined by an expression that is not a constant expression

  • A reference to the transformational function IEEE_SELECTED_REAL_KIND from the intrinsic module IEEE_ARITHMETIC, where each argument is a constant expression

  • A kind type parameter of the derived type being defined

  • A DO variable within an array constructor where each scalar integer expression of the corresponding DO loop is an constant expression

  • Another constant expression enclosed in parentheses, where each subscript, section subscript, substring starting and ending point, and type parameter value is a constant expression

If a constant expression invokes an inquiry function for a type parameter or an array bound of an object, the type parameter or array bound must be specified in a prior specification statement (or to the left of the inquiry function in the same statement). The previous specification cannot be in the same entity declaration.

If a reference to a generic entity is included in a constant expression that is in the specification part of a module or submodule, that generic entity shall have no specific procedures defined subsequent to the constant expression in the module or submodule.

Examples

Valid constant Expressions

-1 + 3

SIZE(B)

! B is a named constant

7_2

INT(J, 4)

! J is a named constant

SELECTED_INT_KIND (2)

Invalid constant Expressions

SUM(A)

Not an allowed function.

A/4.1 - K**1.2

Exponential does not have integer power (A and K are named constants).

HUGE(4.0)

Argument is not an integer.