f2py Fortran 子例程中的检查和依赖属性是什么?
What are check and depend attributes in f2py Fortran subroutines?
我正在修改一些 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 年前的,所以我很生疏。不知何故 Google 找不到对我有用的东西,咨询 http://link.springer.com/book/10.1007/978-1-84882-543-7 and http://link.springer.com/book/10.1007/978-0-85729-233-9 也没有找到任何有用的东西...
正如@VladimirF 的评论所暗示的,正确的查找位置似乎是 f2py
的文档。我在 f2py docs.
中找到了 check
、depend
和各种其他属性的解释
check
属性用于对其关联参数执行一致性检查。 check
采用 C 布尔表达式。
depend
属性告诉 f2py
例如,此参数的 check
属性取决于一个或多个其他参数。这使 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 年前的,所以我很生疏。不知何故 Google 找不到对我有用的东西,咨询 http://link.springer.com/book/10.1007/978-1-84882-543-7 and http://link.springer.com/book/10.1007/978-0-85729-233-9 也没有找到任何有用的东西...
正如@VladimirF 的评论所暗示的,正确的查找位置似乎是 f2py
的文档。我在 f2py docs.
check
、depend
和各种其他属性的解释
check
属性用于对其关联参数执行一致性检查。 check
采用 C 布尔表达式。
depend
属性告诉 f2py
例如,此参数的 check
属性取决于一个或多个其他参数。这使 f2py
能够确保以正确的顺序处理参数。