【问题标题】:What are check and depend attributes in f2py Fortran subroutines?f2py Fortran 子例程中的检查和依赖属性是什么?
【发布时间】:2016-07-09 19:02:41
【问题描述】:

我正在修改一些 Fortran 代码(实际上是f2py),我遇到了这样的子例程(https://github.com/dfm/python-nufft/blob/master/nufft/nufft1d.pyf):

subroutine nufft1d1f90(nj,xj,cj,iflag,eps,ms,fk,ier) ! in :_nufft:src/nufft1d/nufft1df90.f
    integer, optional,check(len(xj)>=nj),depend(xj) :: nj=len(xj)
    real*8 dimension(nj) :: xj
    complex*16 dimension(nj),depend(nj) :: cj
    integer :: iflag
    real*8 :: eps
    integer :: ms
    complex*16 dimension(ms),intent(out),depend(ms) :: fk
    integer,intent(out) :: ier
end subroutine nufft1d1f90

我可以猜测基本信息,但我不确定check 语句的确切作用或如何修改它。另外,我猜depend 以某种方式告诉编译器声明的变量依赖于其他变量,但是这样做的后果是什么?

我通常用 Python 或 Matlab 编程,如果必须的话,但我对 Fortran 的唯一经验是 12 年前,所以我很生疏。不知何故,谷歌找不到任何对我有用的东西,咨询 http://link.springer.com/book/10.1007/978-1-84882-543-7http://link.springer.com/book/10.1007/978-0-85729-233-9 并没有找到任何有用的东西......

【问题讨论】:

  • 您展示的不是 Fortran。它是一个 .pyf 文件,f2py 的自定义语言。除此之外,本网站不用于推荐资源。打开您最喜欢的图书销售网站并搜索“Fortran”并阅读评论。在您喜欢的搜索引擎中搜索“Fortran 教程”。你也可以试试fortranwiki.org中的链接
  • @VladimirF 我确实指定了我正在处理 f2py 并且我绝对认识到上述大部分代码与可能的 Fortran 代码一致。拜托,阅读 Fortran 书籍的评论不太可能告诉我它们是否包含我在这里寻找的特定信息。正如我上面所写的,我已经检查过的两本书没有。我确实在我最喜欢的搜索引擎中进行了搜索,正如我所提到的,我无法找到有关这些特定细节的任何有用信息。您似乎表明我所询问的功能是 f2py 特定的,所以我可以尝试这个方向。谢谢。
  • 但是您的问题是在哪里可以找到 Fortran 子例程的描述,而不是这两个关键字的含义。因此,它是题外话。一个主题问题是checkdepend.pyf 文件中的含义,但您的问题(尤其是标题)与此无关。
  • 好的,现在更正了。

标签: fortran f2py


【解决方案1】:

正如@VladimirF 的评论所暗示的,正确的查看位置似乎是f2py 的文档。我在f2py docs 中找到了checkdepend 和其他各种属性的解释。

check 属性用于对其关联的参数执行一致性检查。 check 采用 C 布尔表达式。

depend 属性告诉f2py,例如,此参数的check 属性取决于一个或多个其他参数。这使f2py 能够确保以正确的顺序处理参数。

【讨论】:

    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多