anchor.diff:    !---------------------------------------------------------------------------------------------------------------------------------
     endfunction strz_I8P
   
  +  !> @brief Function for converting integer to string, prefixing with the right number of zeros. This function achieves casting of
  +  !> integer to string.
     elemental function strz_I4P(nz_pad,n) result(str)
     !---------------------------------------------------------------------------------------------------------------------------------
  -  ! The function strz_I4P converts integer to string, prefixing with the right number of zeros. This function achieves casting of
  -  ! integer to string.
  -  !---------------------------------------------------------------------------------------------------------------------------------
  -
  -  !---------------------------------------------------------------------------------------------------------------------------------
  -  implicit none
  -  integer(I4P), intent(IN), optional:: nz_pad ! Number of zeros padding.
  -  integer(I4P), intent(IN)::           n      ! Integer to be converted.
  -  character(DI4P)::                    str    ! Returned string containing input number plus padding zeros.
  +  implicit none
  +  integer(I4P), intent(IN), optional:: nz_pad !< Number of zeros padding.
  +  integer(I4P), intent(IN)::           n      !< Integer to be converted.
  +  character(DI4P)::                    str    !< Returned string containing input number plus padding zeros.
     !---------------------------------------------------------------------------------------------------------------------------------
   
     !---------------------------------------------------------------------------------------------------------------------------------
  
positive.code: !> @date      2012-04-24
  !> @copyright GNU Public License version 3.
  !> @todo \b g95_test: Test g95 compiler
  !> @ingroup Library
  module IR_Precision
  !-----------------------------------------------------------------------------------------------------------------------------------
  USE, intrinsic:: ISO_FORTRAN_ENV, only: stdout => OUTPUT_UNIT, stderr => ERROR_UNIT ! Standard output/error logical units.
  
negative.code:   !---------------------------------------------------------------------------------------------------------------------------------
  
    !---------------------------------------------------------------------------------------------------------------------------------
    call IR_init
    ! printing informations
    if (endian==endianL) then
      write(stdout,'(A)')           ' This architecture has LITTLE Endian bit ordering'
    else
      write(stdout,'(A)')           ' This architecture has BIG Endian bit ordering'
    endif
    write(stdout,'(A)')             ' Reals kind precision definition'
  #ifdef r16p
    write(stdout,'(A,I2,A,I2)')     ' R16P Kind "',R16P,'" | FR16P format "'//FR16P//'" | DR16P chars ',DR16P
  #endif
    write(stdout,'(A,I2,A,I2)')     ' R8P  Kind "',R8P, '" | FR8P  format "'//FR8P// '" | DR8P  chars ',DR8P
    write(stdout,'(A,I2,A,I2)')     ' R4P  Kind "',R4P, '" | FR4P  format "'//FR4P//'"  | DR4P  chars ',DR4P
    write(stdout,'(A)')             ' Integers kind precision definition'
    write(stdout,'(A,I2,A,I2)')     ' I8P Kind "',I8P,'" | FI8P format "'//FI8P// '" | DI8P chars ',DI8P
    write(stdout,'(A,I2,A,I2)')     ' I4P Kind "',I4P,'" | FI4P format "'//FI4P// '" | DI4P chars ',DI4P
    write(stdout,'(A,I2,A,I2)')     ' I2P Kind "',I2P,'" | FI2P format "'//FI2P//'"  | DI2P chars ',DI2P
    write(stdout,'(A,I2,A,I2)')     ' I1P Kind "',I1P,'" | FI1P format "'//FI1P//'"  | DI1P chars ',DI1P
    write(stdout,'(A)')             ' Reals minimum and maximum values'
  #ifdef r16p
    write(stdout,'(A)')             ' MinR16P "'//trim(str(n=MinR16P))//'" | MaxR16P "'//trim(str(n=MaxR16P))//'"'
  #endif
    write(stdout,'(A)')             ' MinR8P  "'//trim(str(n=MinR8P))//'" | MaxR8P  "'//trim(str(n=MaxR8P))//'"'
    write(stdout,'(A)')             ' MinR4P  "'//trim(str(n=MinR4P))//'" | MaxR4P  "'//trim(str(n=MaxR4P))//'"'
    write(stdout,'(A)')             ' Reals bits/bytes sizes'
  #ifdef r16p
    write(stdout,'(A,I2,A,I2,A)')   ' R16P bits "',BIR16P,'", bytes "',BYR16P,'"'
  #endif
    write(stdout,'(A,I2,A,I2,A)')   ' R8P bits "',BIR8P,'", bytes "',BYR8P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' R4P bits "',BIR4P,'", bytes "',BYR4P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' R_P bits "',BIR_P,'", bytes "',BYR_P,'"'
    write(stdout,'(A)')             ' Integers minimum and maximum values'
    write(stdout,'(A)')             ' MinI8P "'//trim(str(n=MinI8P))//'" | MaxI8P "'//trim(str(n=MaxI8P))//'"'
    write(stdout,'(A)')             ' MinI4P "'//trim(str(n=MinI4P))//'" | MaxI4P "'//trim(str(n=MaxI4P))//'"'
    write(stdout,'(A)')             ' MinI2P "'//trim(str(n=MinI2P))//'" | MaxI2P "'//trim(str(n=MaxI2P))//'"'
    write(stdout,'(A)')             ' MinI1P "'//trim(str(n=MinI1P))//'" | MaxI1P "'//trim(str(n=MaxI1P))//'"'
    write(stdout,'(A)')             ' Integers bits/bytes sizes'
    write(stdout,'(A,I2,A,I2,A)')   ' I8P bits "',BII8P,'", bytes "',BYI8P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' I4P bits "',BII4P,'", bytes "',BYI4P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' I2P bits "',BII2P,'", bytes "',BYI2P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' I1P bits "',BII1P,'", bytes "',BYI1P,'"'
    write(stdout,'(A,I2,A,I2,A)')   ' I_P bits "',BII_P,'", bytes "',BYI_P,'"'
    write(stdout,'(A)')             ' Machine precisions'
  #ifdef r16p
    write(stdout,'(A,'//FR16P//')') ' ZeroR16 "',ZeroR16
  #endif
    write(stdout,'(A,'//FR8P// ')') ' ZeroR8  "',ZeroR8
    write(stdout,'(A,'//FR4P// ')') ' ZeroR4  "',ZeroR4
    !---------------------------------------------------------------------------------------------------------------------------------
    endsubroutine IR_Print
  endmodule IR_Precision
  