!
! portable data types
!

module kinds
  implicit none

  integer, parameter :: INT1  = selected_int_kind(2)   ! Single byte integer
  integer, parameter :: INT2  = selected_int_kind(4)   ! Two byte integer   
  integer, parameter :: INT4  = selected_int_kind(9)   ! Four byte integer

  integer, parameter :: REAL4 = selected_real_kind(5)  ! Single precision
  integer, parameter :: REAL8 = selected_real_kind(12) ! Double precision 

  integer, parameter :: COMPLEX8  = REAL4  ! complex kind from components
  integer, parameter :: COMPLEX16 = REAL8

end module kinds