2016-07-09 24 views
1

Ich modifizieren einige Fortran-Code (f2py, tatsächlich) und ich habe über ein Unterprogramm wie diese kommen (https://github.com/dfm/python-nufft/blob/master/nufft/nufft1d.pyf):Was sind check und depend Attribute in f2py Fortran Subroutinen?

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 

ich die Grundlagen vorstellen können, aber ich bin nicht sicher, was genau die check Aussage tut oder wie ich das ändern kann. Außerdem denke ich, dass depend dem Compiler irgendwie sagt, dass die deklarierte Variable von einer anderen Variablen abhängt, aber welche Konsequenzen hat das?

Ich programmiere normalerweise in Python, oder Matlab, wenn ich muss, aber meine einzige Erfahrung mit Fortran geht 12 Jahre zurück, also bin ich sehr rostig. Irgendwie nicht Google, etwas Sinnvolles für mich zu finden und Beratung http://link.springer.com/book/10.1007/978-1-84882-543-7 und http://link.springer.com/book/10.1007/978-0-85729-233-9 tauchte nicht auf etwas Nützliches ...

+0

Was Sie zeigen, ist nicht Fortran. Es ist eine .pyf-Datei, eine benutzerdefinierte Sprache von f2py. Ansonsten ist diese Site nicht zum Empfehlen von Ressourcen gedacht. Öffnen Sie Ihr Lieblingsbuch Verkaufsseite und suchen Sie nach "Fortran" und lesen Sie die Bewertungen. Suchen Sie nach "Fortran Tutorial" in Ihrer bevorzugten Suchmaschine. Sie können auch versuchen, Links in http://fortranwiki.org –

+0

@VladimirF Ich habe tatsächlich angegeben, dass ich mit f2py beschäftigt war und ich erkenne definitiv die meisten der oben genannten Code als übereinstimmend mit möglichen Fortran-Code. Komm schon, das Lesen von Rezensionen von Fortran-Büchern ist sehr unwahrscheinlich, um mir zu sagen, wenn sie die spezifischen Informationen enthalten, die ich hier suche. Die beiden Bücher, die ich bereits überprüft habe, tun dies nicht. Ich habe in meiner bevorzugten Suchmaschine gesucht und, wie ich bereits erwähnt habe, konnte ich nichts über diese spezifischen Details herausfinden. Sie scheinen darauf hinzuweisen, dass die Features, nach denen ich frage, sehr spezifisch sind, also kann ich diese Richtung versuchen. Vielen Dank. –

+2

Aber Ihre Frage wurde formuliert, wo die Beschreibung der Fortran Subroutinen zu finden, nicht was die beiden Schlüsselwörter bedeuten. Daher ist es off-topic. Eine Frage zum Thema ist, was "check" und "depend" in einer '.pyf' Datei bedeuten, aber deine Frage (und besonders der Titel) geht es nicht darum. –

Antwort

1

Wie @ VladimirF Kommentar impliziert, die richtige Stelle zu suchen scheint die Dokumentation von f2py zu sein. Ich habe Erklärungen zu check, depend und verschiedenen anderen Attributen bei http://docs.scipy.org/doc/numpy-dev/f2py/signature-file.html#attributes gefunden.

Das Attribut check dient zur Konsistenzprüfung des zugehörigen Arguments. check nimmt einen C-booleschen Ausdruck. Das depend Attribut teilt f2py mit, dass zum Beispiel das check Attribut dieses Arguments von einem oder mehreren anderen Argumenten abhängt. Dies ermöglicht f2py sicherzustellen, dass die Argumente in der richtigen Reihenfolge verarbeitet werden.