複素数 Fortran 配列の虚数部への「ポインター」を、実数のみを操作する BLAS 関数に渡したいと思います。データのコピーを必要としないので、C 言語の意味での「ポインター」を意味します。
たとえば、次の単純なコードを考えてみましょう (実際のコードはもう少し複雑です)。
function foo(c1, c2, n) result(r)
complex, dimension(:), intent(in) :: c1, c2
integer, intent(in) :: n
real :: r
real, external :: SDOT
r = SDOT(n, c1(1)%re, 2, c2(1)%im, 2)
end function foo
残念ながら、%re
and%im
は Fortran 2008 でのみ指定されています。さらに、どちらのコンパイラもサポートしていないため、配列の個々の要素に複雑な部分セレクターを適用することが標準で許可されているかどうかはわかりません。
gfortran
「非派生型変数の予期しない '%'」というエラーが表示されます。
私が必要とするものを達成する他の方法はありますか?