I tried to provide the following sample code below to demonstrate the different kinds of real precision. hopefully the last line of output demonstrates the different precision effects.
I then tried to compile the program using /alt_kinds and got a number of errors, as it appears that selected_real_kind might return the salford default values ? I still try to avoid 0.1_3 in my codes.
This code is:
! Test possible values of kind selection
!
integer4, parameter :: i1 = selected_int_kind(2)
integer4, parameter :: i2 = selected_int_kind(4)
integer4, parameter :: i4 = selected_int_kind(9)
integer4, parameter :: i8 = selected_int_kind(18)
!
integer4, parameter :: re = selected_real_kind(6,0)
integer4, parameter :: rd = selected_real_kind(15,0)
integer4, parameter :: rq = selected_real_kind(18,0)
!
real(rq) :: xq = 0.1
real(rq), dimension(4) :: aq
!
write (,) 'Integer kind = ', i1,i2,i4,i8
write (,) 'Real kind = ', re, rd, rq
!
write (,2000) 'Real Kind rq = selected_real_kind(18,0)'
write (,2001) 'kind = ', kind(xq)
write (,2001) 'kind parameter = ', rq
write (,2001) 'precision = ', precision(xq)
write (,) 'huge = ', huge(xq)
write (,2001) 'binary digits = ', digits(xq)
write (,2001) 'range = ', range(xq)
!
2000 format (/a)
2001 format (1x,a,i0)
!
write (,2000) 'rq array ( .1_rq, .2_rq, .3_rq, .4_rq )'
aq = (/ 0.1_rq, 0.2_rq, 0.3_rq, 0.4_rq /)
write (,) 'Array aq', aq
!
write (,2000) 'rq array ( .1, .1e0, .1d0, .1_rq )'
aq(1) = 0.1 ! default to real4
aq(2) = 0.1e0 ! real4
aq(3) = 0.1d0 ! real8
aq(4) = 0.1_rq ! real10
write (,*) 'Array aq', aq
end