Ich habe ein R-Paket, das viele Fortran-Subroutinen für verschachtelte Schleifen rekursiver linearer Algebra-Berechnungen verwendet (stark abhängig von BLAS- und LAPACK-Routinen). Als Schnittstelle zu Fortran verwende ich .Fortran
Funktion. Ich lese gerade Jonathan Callahan's blog post über anstelle von .C
im Falle von Unterprogrammen in C/C++ geschrieben, und es hat mich denken, dass es besser wäre, .Call
Schnittstelle auch bei der Verwendung Fortran Subroutinen zu verwenden, indem Sie einen einfachen Wrapper in C schreiben, die dann anruft die Fortran Subroutinen?R: Vorteile der Verwendung einer Fortran-Subroutine mit .Call und C/C++ - Wrapper anstelle von .Fortran?
Wie gesagt, meine Fortran-Codes sind ziemlich einfach in einem Sinne, dass ich nur mit mehrdimensionalen Arrays vom Typ Double oder Integer spiele. Aber ich habe gelernt, dass ich eine Menge Überprüfungen in R-Seite schreiben muss, um sicherzustellen, dass alles nicht abstürzt, weil ich versehentlich den Speichermodus einer Matrix in eine ganze Zahl änderte oder die Abmessungen einer Matrix geändert wurden usw.
Unterprogramme werden als F90/95 geschrieben.
scheint vernünftig zu sein. Call() mit einigen C-Funktion, und Sie können dann tatsächlich Ihre Fortran Subroutinen aus dem C-Code aufrufen, die relativ einfach ist (oder sogar alles in C tun, wenn Sie Fortran wirklich nicht benötigen). – steabert
Ja, aber welche Vorteile bringt das, wenn überhaupt? Ich könnte komplett zu C wechseln, aber das wäre zu umständlich und ich bezweifle, dass es nützlich wäre, da ich dann Fortran BLAS-Funktionen von C sowieso aufrufen würde. –
Könnte relevant sein: http://www.ualberta.ca/AICT/RESEARCH/LinuxClusters/doc/ifc91/main_for/mergedProjects/bldaps_for/pgsclmix.htm – KLDavenport