本帖最后由 shrine 于 2022-5-19 16:25 编辑
这段在ivf里编译,能通过,但是结果不对啊
[Fortran] 纯文本查看 复制代码 program Test
implicit none
integer::iorder
real(8)::xv1(2),abcd
real(8),external::GaussInteg_Tri
iorder=1
xv1=(/0.0_8,0.0_8/)
abcd=GaussInteg_Tri( fun,xv1 )
write(*,*)abcd
contains
real(8) function fun(xy)
real(8) :: xy(2),x,y
select case(iorder)
case(1)
fun= xy(1)
case(2)
fun= xy(2)
case default
write(*,*) 'error in iorder!',iorder; stop
end select
return
end function
end program Test
function GaussInteg_Tri( fun,xv1 )
real(8) :: GaussInteg_Tri, xv1(2)
real(8) ,external :: fun
GaussInteg_Tri = fun(xv1)
write(*,*)GaussInteg_Tri
return
end function
xv1是一个具有两个元素的数组,程序的本意是,如果iorder是1,就输出第一个元素,如果是2,就输出第二个元素
但是输出的结果却是无穷大
我做了输出调试,函数确实选的第一个,但是传数组的时候出了问题
|