Fortran Tip集

前へ   上へ   次へ

1 実数及び複素数の型記述方法について

1.1 一般的なコードにおいての記述方法

本テキストに示された方法以外にも、良く見られる型の記述方法があります。 それぞれの記述方法について、なぜ推奨されていないのか、理由を述べたいと思います。
推奨 記述 説明
単精度実数 real 単精度はこの記述方法が推奨されます
単精度実数 × real(4) 種別番号4の意味がコンパイラによって異なります(4バイトを意味するとは限らない)
単精度実数 × real*4 Fortran標準に準拠していません
倍精度実数 double precision 倍精度はこの記述方法が推奨されます
倍精度実数 × real(8) 種別番号8の意味がコンパイラによって異なります(8バイトを意味するとは限らない)
倍精度実数 × real*8 Fortran標準に準拠していません
単精度複素数 complex 単精度複素数はこの記述方法が推奨されます
単精度複素数 × complex(4) コンパイラにより種別番号4の意味が異なります
単精度複素数 × complex*8 Fortran標準に準拠していません
倍精度複素数 complex(kind(0d0)) 倍精度複素数はこの記述方法が推奨されます
倍精度複素数 × complex(8) 種別番号8の意味がコンパイラによって異なります
倍精度複素数 × complex*16 Fortran標準に準拠していません
倍精度複素数 × double complex Fortran標準に準拠していません

1.2 より本格的なコードにおいての記述方法

より本格的な記述方法としてはselected_real_kind組込み関数を用いて 必要な有効桁数を持つ型のkind番号を取得する方法があります。 例えば以下の例のようなモジュールを利用すると便利です。

[ precision.f90 ] - 汎用性のある型記述のサンプル
module my_precision
  implicit none
  ! 有効桁数から種別番号を求めるためにselected_real_kindを用いる
  integer,parameter :: wp = selected_real_kind(p=6)  ! p=12等とすると倍精度となる
end module my_precision

program precision
  use my_precision
  implicit none
  real(wp) x    ! wpには指定された有効桁数を持つ型の種別番号が格納されています
  complex(wp) c ! realとcomplexで種別番号は対応しています
  x = 0.1_wp   ! このようすることで、指定種別の定数表現が可能です
  c = (0.5_wp, 1.2_wp)
  print *, x
  print *, c
end program

出力例:(p=6の場合)
   0.1000000
 (0.5000000,1.2000000)

出力例:(p=12の場合)
   0.1000000000000000
 (0.5000000000000000,1.2000000000000000)

このような記述により汎用性の高いプログラムの作成が可能です。


前へ   上へ   次へ

関連情報
ご案内
Privacy Policy  /  Trademarks