fortran66のブログ

fortran について書きます。

CMPLX の KIND 指定

組み込み関数 CMPLX() は REAL(4) がデフォールト値なので、引数が倍精度でも第二引数で KIND を倍精度に指定しないと、単精度で変換されます。

実行結果

ソース・プログラム

program Complex
  implicit none
  complex (kind = 8) :: c
  real (kind = 4) :: a
  real (kind = 8) :: d
  d = 1.0d0 / 3.0d0
  a = d
  c = cmplx(a, a)
  print *, c
  c = cmplx(d, d)
  print *, c
  c = cmplx(d, d, kind = 8)
  print *, c
  stop
end program Complex