おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

transfer関数とSELECTED_INT_KIND関数

SELECTED_INT_KIND:指定した指数範囲を表現できる整数型の種別型パラメタ値を求める

使い方
program large_integers
   integer,parameter :: k5 = selected_int_kind(5)
   integer,parameter :: k15 = selected_int_kind(15)
   integer(kind=k5) :: i5
   integer(kind=k15) :: i15
          
   print *, huge(i5), huge(i15)
          
   ! The following inequalities are always true
   print *, huge(i5) >= 10_k5**5-1
   print *, huge(i15) >= 10_k15**15-1
end program large_integers

TRANSFER:第1引数を第2引数の型として扱う

使い方
program test
  implicit none

  real :: double = 3.14
  integer :: int = 314

  write(*,*) 'double->double',transfer(double,1.0)
  write(*,*) 'int->double',transfer(int,1.0)
  write(*,*) 'double->int',transfer(double,1)
  write(*,*) 'int->int',transfer(int,1)

endprogram test

realからinteger,integerからrealがうまく行かない…。

 double->double   3.1400001    
 int->double  4.40007718E-43
 double->int  1078523331
 int->int         314

参考URL:https://gcc.gnu.org/onlinedocs/gfortran/index.html#Top