Что такое атрибуты проверки и зависимости в подпрограммах f2py Fortran?

Я модифицирую некоторый код 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 и http://link.springer.com/book/10.1007/978-0-85729-233-9 ничего полезного не обнаружил...


person Thomas Arildsen    schedule 09.07.2016    source источник
comment
То, что вы показываете, НЕ Фортран. Это файл .pyf, пользовательский язык f2py. Кроме этого, этот сайт не предназначен для рекомендаций ресурсов. Откройте свой любимый сайт по продаже книг, найдите Fortran и прочитайте отзывы. Найдите учебник по Fortran в вашей любимой поисковой системе. Вы также можете попробовать ссылки на fortranwiki.org.   -  person Vladimir F    schedule 09.07.2016
comment
@VladimirF Я действительно указал, что имею дело с f2py, и я определенно признаю, что большая часть приведенного выше кода совпадает с возможным кодом Fortran. Да ладно, чтение обзоров книг по Fortran вряд ли скажет мне, содержат ли они конкретную информацию, которую я ищу здесь. Две книги, которые я уже проверил, как я писал выше, этого не делают. Я провел поиск в своей любимой поисковой системе и, как уже упоминал, не смог найти ничего полезного об этих конкретных деталях. Кажется, вы указываете, что функции, о которых я спрашиваю, специфичны для f2py, поэтому я могу попробовать это направление. Спасибо.   -  person Thomas Arildsen    schedule 09.07.2016
comment
Но ваш вопрос был сформулирован в том, где найти описание подпрограмм Фортрана, а не в том, что означают два ключевых слова. Поэтому это не по теме. Вопрос по теме — что означают check и depend в файле .pyf, но ваш вопрос (и особенно заголовок) не об этом.   -  person Vladimir F    schedule 10.07.2016
comment
Хорошо, исправлено сейчас.   -  person Thomas Arildsen    schedule 10.07.2016


Ответы (1)


Как следует из комментария @VladimirF, правильным местом для поиска является документация f2py. Я нашел объяснения check, depend и различных других атрибутов в документы f2py.

Атрибут check предназначен для проверки согласованности связанного с ним аргумента. check принимает логическое выражение C.

Атрибут depend сообщает f2py, что, например, атрибут check этого аргумента зависит от одного или нескольких других аргументов. Это позволяет f2py гарантировать, что аргументы обрабатываются в правильном порядке.

person Thomas Arildsen    schedule 09.07.2016