Intel® Fortran Compiler - Support for Fortran language standards

Fortran 2003 (and Earlier) Support

As of compiler version 16.0 (Intel® Parallel Studio XE 2016), the Intel® [Visual] Fortran compiler is fully compliant with the ISO/IEC 1539-1:2004 Fortran language standard (Fortran 2003 Language). Intel Fortran also fully supports programs that conform to the earlier standards Fortran 95, Fortran 90, FORTRAN 77 and FORTRAN IV (FORTRAN 66.) In some cases, compiler options may need to be specified to enable support of behavior that was different in earlier versions of the Fortran standard.

Fortran 2008 Support

The Intel [Visual] Fortran Compiler now supports all features from the Fortran 2008 standard

Compiler version 18.0 added support for the following Fortran 2008 features not supported by version 17.0:

  • Module intrinsic functions COMPILER_OPTIONS and COMPILER_VERSION
  • COMPLEX arguments to trigonometric and hyperbolic intrinsic functions
  • ATAN(Y,X) as an alternate spelling of ATAN2
  • Intrinsic function FINDLOC
  • Optional BACK= argument to intrinsic functions MAXLOC and MINLOC
  • Passing a non-pointer data actual argument to a pointer dummy argument
  • Intrinsic assignment to polymorphic variables with allocatable LHS
  • Allocatable components of recursive type and forward reference
  • Subscripts and implied-DO limits in DATA can be any constant expression
  • Pointer function reference in a variable definition context
  • Multiple type-bound procedures declared in a PROCEDURE list

Fortran 2015 Support

Draft Fortran 2015 features supported include:

  • All features described in ISO/IEC TS29113:2012, Further Interoperability with C (16.0)
    • Assumed type (TYPE(*))
    • Assumed rank (DIMENSION(..))
    • ISO_Fortran_binding.h
    • C descriptors and procedures for manipulating them
    • RANK intrinsic
    • Relaxed restrictions on interoperable dummy arguments
    • Relaxed restrictions on procedures in intrinsic module ISO_C_BINDING

Additional Information

The Intel Fortran compiler also supports a number of extensions to the Fortran standards, as well as command-line options that allow you to override the default actions of the compiler.

In some cases, the default behavior of the Intel Fortran Compiler does not conform to Fortran 2003 semantics.  The following table lists the compiler options which are not enabled by default and which must be specified to obtain full Fortran 2003 semantics. Note that, in some cases, enabling these options may lower run-time performance.

The single option /standard-semantics (Windows) or -standard-semantics (Linux and OS X) can be used to set all options required to obtain full Fortran 2003 semantics. If using the IEEE_ARITHMETIC, IEEE_EXCEPTIONS or IEEE_FEATURES intrinsic modules, /fp:strict (Windows) or -fp-model strict (Linux and OS X) must also be specified.

Non-Default Compiler Options for Fortran 2003 Semantics
Windows*Linux* and OS X*
/assume:byterecl-assume byterecl
/assume:fpe_summary-assume fpe_summary
/assume:ieee_fp_flags (if /fp:strict or precise also set)-assume ieee_fp_flags (if -fp-model strict or precise also set)
/assume:minus0-assume minus0
/assume:noold_ldout_format-assume noold_ldout_format
/assume:noold_maxminloc-assume noold_maxminloc
/assume:noold_unit_star-assume noold_unit_star
/assume:noold_xor-assume noold_xor
/assume:protect_parens-assume protect_parens
/assume:std_mod_proc_name-assume std_mod_proc_name
/fpscomp:logicals-fpscomp logicals

NOTE: Compiler version 17.0 changed the default behavior to be that of /assume:realloc_lhs (-assume realloc_lhs). To disable that behavior in version 17.0 or later, use /assume:norealloc_lhs (-assume norealloc_lhs) or /nostandard-realloc-lhs (-nostandard-realloc-lhs)

For more information, please refer to the "Compiler Options" section of the Intel Fortran Compiler documentation.

For more complete information about compiler optimizations, see our Optimization Notice.