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