Aufruf von FORTRAN-Routinen in C
unter HP-UX:
alle Routinennamen klein, keine zusätzlichen Underscores
alle
Parameter als Pointer
ggf. extra Variablen für Konstante einführen
Übersetzung der Basistypen:
Fortran
C
LOGICAL*4
int
long
INTEGER*4
int
long
INTEGER*8
long long
REAL*4
float
REAL*8
double
Character-Parameter:
als konstante Strings oder char-Pointer
zusätzliche int-Parameter für die Stringlänge (ohne \0)
folgen am Ende der Parameterliste
komplexe Zahlen:
Struktur mit zwei floats (
COMPLEX*8
) bzw. zwei doubles (
COMPLEX*16
)
als
complex8_t
bzw.
complex16_t
in den MLIB-Headerfiles definiert
MLIB erwartet Fortran-Arrays:
Startindex = 1
Abspeicherung spaltenweise (in C: zeilenweise)
Beispiel:
Fortran:
real(kind=REAL8), dimension(:,:) :: a
integer :: n
real(kind=REAL8), dimension(:) :: work
real(kind=REAL8) :: anorm
anorm = dlange('i', n, n, a, n, work)
C:
double *a;
int n;
double *work;
double anorm;
anorm = dlange("i", &n, &n, a, &n, work, 1)
Peter Junglas 20.6.2000