nano_exit

基礎的なことこそ、簡単な例が必要だと思うのです。

fortran における複素数の入力

以下のファイルの中身を複素数の変数に読み込ませたいとする。

# test input file: test.inp
1.00000  2.00000

結構探したが、fortranで外部から複素数を読み込ませるときの上手い方法が見つからなかった。
結局、実数変数に一時的に格納し、後で複素数に変換するという形しか無さそう。

program test

implicit none
integer, parameter :: INPUT = 10
integer, parameter :: DP = selected_real_kind( 8 )
complex( DP ), parameter :: I = cmplx( 0, 1 )

real( DP ) :: temp( 2 )
complex( DP ) :: c
character( 99 ) :: filename

filename = 'test.inp'
open( INPUT, file = filename, status = 'old' )
read( INPUT, * ) temp( 1 : 2 )
c = cmplx( temp( 1 ), temp( 2 ) )
! or c = temp( 1 ) + I * temp( 2 )

end program test