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))
42 integer,
parameter ::
realkindmax = max(selected_real_kind(6),selected_real_kind(15),selected_real_kind(18), &
…
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.