f2py Fortran子程序中的check和depend属性是什么?

时间:2016-07-09 19:02:41

标签: fortran f2py

我正在修改一些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没有找到任何有用的东西......

1 个答案:

答案 0 :(得分:1)

正如@ VladimirF的评论暗示的那样,正确的地方似乎是f2py的文档。我在http://docs.scipy.org/doc/numpy-dev/f2py/signature-file.html#attributes找到了checkdepend和其他各种属性的解释。

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

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