Switch to side-by-side view

--- 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.