demo_anyscalar_to_int64.f90 Source File


Source Code

      program demo_anyscalar_to_int64
      use, intrinsic :: iso_fortran_env, only : int8, int16, int32, int64
      implicit none
         ! call same function with many scalar input types
         write(*,*)squarei(huge(0_int8)),huge(0_int8) , &
         & '16129'
         write(*,*)squarei(huge(0_int16)),huge(0_int16) , &
         & '1073676289'
         write(*,*)squarei(huge(0_int32)),huge(0_int32) , &
         & '4611686014132420609'
         write(*,*)squarei(huge(0_int64)),huge(0_int64) , &
         & '85070591730234615847396907784232501249'
      contains
      !
      function squarei(invalue)
      use M_anything, only : anyscalar_to_int64
      class(*),intent(in)  :: invalue
      doubleprecision      :: invalue_local
      doubleprecision      :: squarei
         invalue_local=anyscalar_to_int64(invalue)
         squarei=invalue_local*invalue_local
      end function squarei
      !
      end program demo_anyscalar_to_int64