我想将指向复杂 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
并且%im
仅在 Fortran 2008 中指定。此外,我不确定标准是否允许将复杂的部分选择器应用于数组的各个元素,因为我的编译器都不支持。
gfortran
抱怨“非派生类型变量的意外'%'”。
还有其他方法可以实现我的需要吗?