Fortran 中是否可以有函数指针?现在我有一个代码,其中包含如下几行:
subroutine flag(iflag,a,b)
integer n, a, b, ii, iflag
do ii = 1, n
if (iflag.eq.0) a+b
else a-b
end do
return
end
变量“n”有一个巨大的值,所以要运行这段代码,我觉得我在用“if”命令浪费了很多时间。是否可以编写函数指针之类的东西(我不确定我的意思),以便在代码中执行以下操作:
subroutine flag(iflag,a,b)
*depending on the iflag the subroutine flag is automatically
precompiled to call either flag_plus or flag_minus*
return
end
subroutine flag_plus(a,b)
integer n, a, b, ii
do ii = 1, n
a+b
end do
return
end
subroutine flag_minus(a,b)
integer n, a, b, ii
do ii = 1, n
a-b
end do
return
end
如果可能的话,我可以通过避免“if”循环来节省大量时间。这样的事情远程可能吗?