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

ID 767251
Date 3/31/2023
Public

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

Document Table of Contents

Data Representation

Intel® Fortran expects numeric data to be in native little endian order, in which the least-significant, right-most zero bit (bit 0) or byte has a lower address than the most-significant, left-most bit (or byte). For information on using non-native big endian and VAX* floating-point formats, see Supported Native and Non-native Numeric Formats.

The following table lists the intrinsic data types used by Intel® Fortran, the storage required, and valid ranges. For information on declaring Fortran intrinsic data types, see Type Declarations. For example, the declaration INTEGER(4) is the same as INTEGER(KIND=4) and INTEGER*4.

Data Type

Storage

Description

BYTE

1 byte

(8 bits)

A signed integer data type equivalent to INTEGER(1).

INTEGER

See INTEGER(2), INTEGER(4), and INTEGER(8)

A signed integer, either INTEGER(2), INTEGER(4), or INTEGER(8). The size is controlled by the integer-size compiler option.

INTEGER(1)

1 byte

(8 bits)

A signed integer value from -128 to 127.

INTEGER(2)

2 bytes

(16 bits)

A signed integer value from -32,768 to 32,767.

INTEGER(4)

4 bytes

(32 bits)

A signed integer value from -2,147,483,648 to 2,147,483,647.

INTEGER(8)

8 bytes

(64 bits)

A signed integer value from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.

REAL

See REAL(4), REAL(8), and REAL(16)

A real floating-point value, either REAL(4), REAL(8), or REAL(16). The size is controlled by the real-size compiler option.

DOUBLE PRECISION

See REAL(8) and REAL(16)

A double precision floating-point value, either REAL(8) or REAL(16). The size is controlled by the double-size compiler option.

REAL(4)

4 bytes

(32 bits)

A single-precision real floating-point value in IEEE binary32 format ranging from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are subnormal.

REAL(8)

8 bytes

(64 bits)

A double-precision real floating-point value in IEEE binary64 format ranging from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are subnormal.

REAL(16)

16 bytes (128 bits)

An extended-precision real floating-point value in IEEE binary128 format ranging from 6.4751751194380251109244389582276465524996Q-4966 to 1.189731495357231765085759326628007016196477Q4932.

COMPLEX

See COMPLEX(4), COMPLEX(8), and COMPLEX(16)

A complex floating-point value in a pair of real and imaginary parts that are either REAL(4), REAL(8), or REAL(16). The size is controlled by the real-size compiler option.

DOUBLE COMPLEX

See COMPLEX(8) and COMPLEX(16)

A double complex floating-point value in a pair of real and imaginary parts that are either REAL(8) or REAL(16). The size is controlled by the double-size compiler option.

COMPLEX(4)

8 bytes

(64 bits)

A single-precision complex floating-point value in a pair of IEEE binary32 format parts: real and imaginary. The real and imaginary parts each range from 1.17549435E-38 to 3.40282347E38. Values between 1.17549429E-38 and 1.40129846E-45 are subnormal.

COMPLEX(8)

16 bytes (128 bits)

A double-precision complex floating-point value in a pair of IEEE binary64 format parts: real and imaginary. The real and imaginary parts each range from 2.2250738585072013D-308 to 1.7976931348623158D308. Values between 2.2250738585072008D-308 and 4.94065645841246544D-324 are subnormal.

COMPLEX(16)

32 bytes (256 bits)

An extended-precision complex floating-point value in a pair of IEEE binary128 format parts: real and imaginary. The real and imaginary parts each range from 6.4751751194380251109244389582276465524996Q-4966 to 1.189731495357231765085759326628007016196477Q4932.

LOGICAL

See LOGICAL(2), LOGICAL(4), and LOGICAL(8)

A logical value, either LOGICAL(2), LOGICAL(4), or LOGICAL(8). The size is controlled by the integer-size compiler option.

LOGICAL(1)

1 byte

(8 bits)

A logical value of .TRUE. or .FALSE.

LOGICAL(2)

2 bytes

(16 bits)

A logical value of .TRUE. or .FALSE.

LOGICAL(4)

4 bytes

(32 bits)

A logical value of .TRUE. or .FALSE.

LOGICAL(8)

8 bytes

(64 bits)

A logical value of .TRUE. or .FALSE.

CHARACTER

1 byte (8 bits) per character

Character data represented by character code convention. Declarations for Character Types can be in the form CHARACTER(LEN=n) or CHARACTER*n, where n is the number of bytes or n is (*) to indicate passed-length format.

HOLLERITH

1 byte (8 bits) per Hollerith character

A Hollerith constant.

In addition, you can define Binary Constants.