Fortran high precision example

This is an example about the high precision in Fortran, at first we see a normal Program:

program hello
    implicit none
    real   :: div
    real   :: i
    Print  *,"write your number:"
    read   *, i
    i= div(i)
    print  *,"your result:",i
end program Hello

real function div( a )
  implicit none
  real  :: a
  div   = a/3
end function div

our Result looks like this:

 write your number:   
4      
 your result:   1.33333337

 

Now we use selected_real_kind(32) to get an higher precision data type:

program hello
    implicit none
    real(kind=selected_real_kind(32)):: div
    real(kind=selected_real_kind(32)) :: i
    Print  *,"write your number:"
    read   *, i
    i= div(i)
    print  *,"your result:",i
end program Hello

real(kind=selected_real_kind(32)) function div( a )
  implicit none
  real(kind=selected_real_kind(32))  :: a
  div   = a/3
end function div

Now we get this result:

 write your number:   
4   
 your result:   1.33333333333333333333333333333333327

looks much better than the first.