我正在编写一小段Fortran 90代码来使用复杂变量计算一些数量.
我有一个子程序,其中包含以下说明:
complex, dimension(3) :: v
integer :: i
real:: tmp
do i = 1,3
tmp = vg(i)
v(i) = (tmp, 0.0)
enddo
Run Code Online (Sandbox Code Playgroud)
v是一个长度为3的复杂数组.vg也是一个长度为3的数组,其元素是真实的.
当我用gfortran 4.7.3编译上面的代码时,我收到以下错误:
v(i) = (tmp,0.0)
Error: Expected PARAMETER symbol in complex constant at (1)
Run Code Online (Sandbox Code Playgroud)
我不明白这是什么问题.
你必须使用
v(i) = cmplx(tmp, 0.0)
Run Code Online (Sandbox Code Playgroud)
您的语法(re, im)仅适用于常量表达式,即当re和im是实数或整数常量时。
这意味着您无法从实数变量和实数常量生成复数常量。您必须使用将变量cmplx转换real为complex变量的内部函数,或者complex从变量对real(或整数)构建变量。