2

複素数配列の実数部を別の配列に格納せずにFortranのサブルーチンに渡して、それを渡すことは可能ですか?例:代わりに

Z = complex array;

X = real(Z)

call foo(X)

以下をせよ

Z = complex array

call foo(real(Z))

これにより、コンパイラエラーが発生します。私はインテル®コンパイラーifortを使用しています。

4

1 に答える 1

4

確かに、それは機能します:

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
于 2013-02-24T14:34:11.047 に答える