| 本帖最后由 shrine 于 2022-5-19 16:25 编辑 
 这段在ivf里编译,能通过,但是结果不对啊
 
 [Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode 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,就输出第二个元素
 
 但是输出的结果却是无穷大
 
 我做了输出调试,函数确实选的第一个,但是传数组的时候出了问题
 
 |