31  integer, 
parameter :: 
long = selected_int_kind(18)  
 
   32  integer, 
parameter :: 
lng = selected_int_kind(18)   
 
   35  integer, 
parameter :: 
double = selected_real_kind(15,307)  
 
   36  integer, 
parameter :: 
dbl = selected_real_kind(15,307)     
 
   39  integer, 
parameter :: 
intkindmax = max(selected_int_kind(9),selected_int_kind(18),selected_int_kind(38),selected_int_kind(99))
 
   42  integer, 
parameter :: 
realkindmax = max(selected_real_kind(6),selected_real_kind(15),selected_real_kind(18), &
 
   43       selected_real_kind(31),selected_real_kind(33),selected_real_kind(99))
 
 
   63    integer, 
intent(out) :: ikindmax,rkindmax
 
   64    logical, 
intent(in), 
optional :: warn
 
   65    integer :: acc,rng,kind
 
   70    if(
present(warn)) warning = warn
 
   74       kind = selected_int_kind(rng)
 
   83       kind = selected_real_kind(acc,rng)
 
   91       kind = selected_real_kind(acc,rng)
 
   97    if(rkindmax2.ne.rkindmax) 
then 
   99          write(6,
'(/,A,2I6)')
'  Warning:  max_accuracy_kinds found two different values for max kind: ',rkindmax,rkindmax2
 
  100          write(6,
'(A,/)')
'  You should check what is going on...' 
  102       rkindmax = min(rkindmax,rkindmax2)  
 
 
Provides kinds and related constants/routines.
 
integer, parameter intkindmax
Maximum integer kind:
 
integer, parameter lng
Long integer.
 
integer, parameter double
Double-precision float. Precision = 15, range = 307.
 
integer, parameter dbl
Double-precision float. Precision = 15, range = 307.
 
integer, parameter long
Long integer.
 
integer, parameter realkindmax
Maximum real kind:
 
subroutine max_accuracy_kinds(ikindmax, rkindmax, warn)
Get the kinds of the most accurate integer and real for the current compiler/system.