Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference
A newer version of this document is available. Customers should click here to go to the newest version.
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.