Fortran 2003 introduced intrinsic modules which provide access to special named constants, derived types and module procedures. There are now five standard intrinsic modules:
ISO_C_Binding; supporting C interoperability;
ISO_Fortran_env; detailing the Fortran environment;
IEEE_Features; supporting so-called IEEE arithmetic facility.
These intrinsic modules are part of the Fortran library and accessed like other modules except that the
use statement may have the intrinsic nature explicitly stated:
use, intrinsic :: ISO_C_Binding
This ensures that the intrinsic module is used when a user-provided module of the same name is available. Conversely
use, non_intrinsic :: ISO_C_Binding
ensures that that same user-provided module (which must be accessible) is accessed instead of the intrinsic module. Without the module nature specified as in
an available non-intrinsic module will be preferred over the intrinsic module.
The intrinsic IEEE modules are different from other modules in that their accessibility in a scoping unit may change the behaviour of code there even without reference to any of the entities defined in them.