MODULE Numeric_Kinds_Module IMPLICIT NONE SAVE INTEGER, PARAMETER :: I1_Kind = SELECTED_INT_KIND(1) ! 1 byte integer INTEGER, PARAMETER :: I4_Kind = SELECTED_INT_KIND(7) ! 4 byte integer INTEGER, PARAMETER :: I8_Kind = SELECTED_INT_KIND(14) ! 8 byte integer INTEGER, PARAMETER :: SP_Kind = SELECTED_REAL_KIND( 6,30) ! Single precsion INTEGER, PARAMETER :: DP_Kind = SELECTED_REAL_KIND(14,300) ! Double precsion INTEGER, PARAMETER :: QP_Kind = SELECTED_REAL_KIND(25,1000) ! Quadruple precision ! Current integer and real kinds INTEGER, PARAMETER :: IW_Kind = I4_Kind ! Working integer INTEGER, PARAMETER :: WP_Kind = DP_Kind ! Working real ! Commonly used integer constants INTEGER(KIND=IW_Kind), PARAMETER :: IW_Bit_Size = Bit_Size(1_IW_Kind) ! Number of bits INTEGER(KIND=IW_Kind), PARAMETER :: IW_Digits = Digits(1_IW_Kind) ! Number of digits INTEGER(KIND=IW_Kind), PARAMETER :: WP_Digits = Digits(1.0_WP_Kind) ! Number of digits INTEGER(KIND=IW_Kind), PARAMETER :: IP_Huge = Huge(1_IW_Kind) ! Largest Integer number ! Commonly used real constants REAL(KIND=WP_Kind), PARAMETER :: WP_Tiny = TINY(1.0_WP_Kind) ! Smallest real number REAL(KIND=WP_Kind), PARAMETER :: WP_Huge = Huge(1.0_WP_Kind) ! Largest real number REAL(KIND=WP_Kind), PARAMETER :: WP_Epsilon = Epsilon(1.0_WP_Kind) ! Smallest number with zero exponent REAL(KIND=WP_Kind), PARAMETER :: Zero = 0.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: One = 1.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Two = 2.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Three = 3.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Four = 4.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Five = 5.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Six = 6.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Seven = 7.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Eight = 8.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Nine = 9.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Ten =10.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Eleven =11.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Twelve =12.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Fifteen =15.0_WP_Kind REAL(KIND=WP_Kind), PARAMETER :: Half =One/Two REAL(KIND=WP_Kind), PARAMETER :: Pi =Four*Atan(One) END MODULE Numeric_Kinds_Module