複素数配列の実数部を別の配列に格納せずにFortranのサブルーチンに渡して、それを渡すことは可能ですか?例:代わりに
Z = complex array;
X = real(Z)
call foo(X)
以下をせよ
Z = complex array
call foo(real(Z))
これにより、コンパイラエラーが発生します。私はインテル®コンパイラーifortを使用しています。
確かに、それは機能します:
module testmod
implicit none
integer, parameter :: dp = kind(1.0d0)
contains
subroutine realsub(array)
real(dp), intent(in) :: array(:)
print *, array
end subroutine realsub
end module testmod
program testprog
use testmod
implicit none
complex(dp) :: array(3)
array(:) = [ (1.0_dp, 1.0_dp), (3.0_dp, 2.0_dp), (-1.0_dp, 3.0_dp) ]
call realsub(real(array))
end program testprog