--- a
+++ b/LibDBlasL2F77.mod
@@ -0,0 +1,79 @@
+IMPLEMENTATION MODULE LibDBlasL2F77;
+
+ (*------------------------------------------------------------------------*)
+ (* Schnittstell zu Level 2 Blas FORTRAN77 Subroutinen. *)
+ (* Interface to level 2 Blas FORTRAN77 subroutines. *)
+ (*------------------------------------------------------------------------*)
+ (* Letzte Veraenderung *)
+ (* *)
+ (* 11.09.17, MRi: Erstellen der ersten Version mit dgemv, zgemv *)
+ (*------------------------------------------------------------------------*)
+ (* Offene Punkte *)
+ (* *)
+ (* - Testen *)
+ (*------------------------------------------------------------------------*)
+ (* Implementation : Michael Riedl *)
+ (* Licence : GNU Lesser General Public License (LGPL) *)
+ (*------------------------------------------------------------------------*)
+
+ (* $Id: LibDBlasL2F77.mod,v 1.1 2018/09/12 13:20:49 mriedl Exp mriedl $ *)
+
+FROM LibDBlasL1F77 IMPORT CHAR1,INTEGER4,DOUBLEPRECISION,DOUBLECOMPLEX;
+FROM LibDBlasLxF77 IMPORT dgemv_,zgemv_;
+ IMPORT LibDBlasM2;
+
+PROCEDURE dgemv( Trans : CHAR1;
+ M,N : INTEGER4;
+ Alpha : DOUBLEPRECISION;
+ VAR A : ARRAY OF ARRAY OF DOUBLEPRECISION;
+ lda : INTEGER4;
+ VAR X : ARRAY OF DOUBLEPRECISION;
+ IncX : INTEGER4;
+ Beta : DOUBLEPRECISION;
+ VAR Y : ARRAY OF DOUBLEPRECISION;
+ IncY : INTEGER4);
+
+ (*---------------------------------------------------------------*)
+ (* Aufruf der Fortran Version von BLAS2 subroutine dgemv *)
+ (*---------------------------------------------------------------*)
+BEGIN
+ lda:=HIGH(A[0]) + 1;
+ IF (CAP(Trans) = "N") THEN
+ Trans := "T";
+ ELSIF (CAP(Trans) = "T") THEN
+ Trans := "N";
+ END;
+ dgemv_(Trans,N,M,Alpha,A[0][0],lda,X[0],IncX,Beta,Y[0],IncY);
+END dgemv;
+
+PROCEDURE zgemv( Trans : CHAR1;
+ M,N : INTEGER4;
+ Alpha : DOUBLECOMPLEX;
+ VAR A : ARRAY OF ARRAY OF DOUBLECOMPLEX;
+ lda : INTEGER4;
+ VAR X : ARRAY OF DOUBLECOMPLEX;
+ IncX : INTEGER4;
+ Beta : DOUBLECOMPLEX;
+ VAR Y : ARRAY OF DOUBLECOMPLEX;
+ IncY : INTEGER4);
+
+ (*---------------------------------------------------------------*)
+ (* Aufruf der Fortran Version von BLAS2 subroutine dgemv *)
+ (*---------------------------------------------------------------*)
+BEGIN
+ lda := HIGH(A[0]) + 1;
+ IF (CAP(Trans) = "N") THEN
+ Trans := "T";
+ ELSIF (CAP(Trans) = "T") THEN
+ Trans := "N";
+ ELSIF (CAP(Trans) = "C") THEN
+ (* Dieser Fall laesst sich nicht abbilden ohne zweimale *)
+ (* die Matrix A zu durchlaufen, daher wird die Modula-2 *)
+ (* Implementation von zgemv direkt aufgerufen *)
+ LibDBlasM2.zgemv(Trans,M,N,Alpha,A,lda,X,IncX,Beta,Y,IncY);
+ RETURN;
+ END;
+ zgemv_(Trans,N,M,Alpha,A[0][0],lda,X[0],IncX,Beta,Y[0],IncY);
+END zgemv;
+
+END LibDBlasL2F77.