Fortran Coder

查看: 8375|回复: 2
打印 上一主题 下一主题

[子程序] 子程序能作为参数传递吗?

[复制链接]

86

帖子

36

主题

0

精华

专家

F 币
353 元
贡献
221 点
跳转到指定楼层
楼主
发表于 2017-7-8 10:36:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shrine 于 2017-7-8 10:40 编辑

最近在看最小二乘法minpack,简洁起见,过多参数用省略号表示,fcn是需要自己提供的
subroutine lmder(fcn,......wa4)
      integer ....      
      double .....


      call fcn(m,n,x,fvec,fjac,ldfjac,iflag)
end
      既然要call fcn,那肯定是subroutine,而不是function,但是subroutine怎么能作为参数传递呢?

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2017-7-8 19:55:44 | 只看该作者
方法1(假设 fcn 返回 real 类型):
[Fortran] 纯文本查看 复制代码
Subroutine Imder( fcn , ... )
Real , external :: fcn
y = fcn(x)

方法2:
[Fortran] 纯文本查看 复制代码
Subroutine Imder( fcn , ... )
Interface
  real function fcn( x )
    real :: x
  end function fcn
End Interface
y = fcn(x)

130

帖子

10

主题

0

精华

大师

F 币
617 元
贡献
372 点

贡献勋章管理勋章帅哥勋章元老勋章星光勋章规矩勋章

板凳
发表于 2017-8-12 13:22:13 | 只看该作者
蒐集來的資料, 敬請參考:

subprogram-as-argument.pdf

714.17 KB, 下载次数: 15

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 08:55

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表