问题描述
让我们编译以下Fortran程序:
program main
implicit none
integer::j
complex::y(2)
real::x(2)
x(1)=1.0
x(2)=2.0
do j=1,2
y(j)=FF(x(j))
enddo
write(6,*)
write(6,*) y,"by DO"
forall (integer::i=1:2)
y(i)=FF(x(i))
end forall
write(6,"by FORALL"
do concurrent (integer::i=1:2)
y(i)=FF(x(i))
enddo
write(6,"by DO CONCURRENT"
write(6,*)
contains
complex pure function FF(xx)
real,intent(in)::xx
FF=cmplx(xx)
end function
end program
$ ./a.out
(1.000000,0.0000000E+00) (2.000000,0.0000000E+00) by DO
(1.000000,0.0000000E+00) by FORALL
(2.000000,0.0000000E+00) by DO CONCURRENT
第一和第二结果与预期的一样。 为什么CON CONRRRRENT不能给出相同的结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)