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