2016-07-09 3 views
1

Я модифицируя некоторые Fortran кода (f2py, на самом деле), и я наткнулся на подпрограмму, как это (https://github.com/dfm/python-nufft/blob/master/nufft/nufft1d.pyf):Что такое атрибуты проверки и зависимости в подпрограммах f2py Fortran?

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 не оказаться ничего полезного ...

+0

То, что вы показываете, не является фортраном. Это файл .pyf, настраиваемый язык f2py. Кроме этого, этот сайт не рекомендует ресурсы. Откройте свой любимый сайт для продажи книг и найдите «Fortran» и прочитайте отзывы. Найдите «учебник Fortran» в своей любимой поисковой системе. Вы также можете попробовать ссылки в http://fortranwiki.org –

+0

@ VladimirF Я действительно указал, что я имел дело с f2py, и я определенно признаю, что большинство вышеуказанного кода совпадают с возможным кодом Fortran. Пойдем, чтение обзоров книг Fortran вряд ли скажет мне, содержат ли они конкретную информацию, которую я ищу здесь. Две книги, которые я уже проверил, как я писал выше, не делают. Я искал в своей любимой поисковой системе, и, как я уже упоминал, я не смог найти ничего полезного в этих конкретных деталях. Вы, кажется, указываете, что функции, о которых я спрашиваю, являются f2py-specific, поэтому я могу попробовать это направление. Благодарю. –

+2

Но ваш вопрос был сформулирован там, где можно найти описание подпрограмм Fortran, а не то, что означают два ключевых слова. Поэтому это не по теме. Вопрос по теме - это то, что означает 'check' и' depend' в файле '.pyf', но ваш вопрос (и особенно название) не об этом. –

ответ

1

Как @ комментарий VladimirF подразумевал, правильное место, чтобы посмотреть, как представляется, документация f2py. Я нашел объяснения check, depend и другие другие атрибуты: http://docs.scipy.org/doc/numpy-dev/f2py/signature-file.html#attributes.

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

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

Смежные вопросы