Switch to side-by-side view

--- a/LibDBlasLxF77.def.m2pp
+++ b/LibDBlasLxF77.def.m2pp
@@ -37,6 +37,7 @@
   (*                                                                        *)
   (* 29.10.17, MRi: Erstellen der ersten Version nur mit dgemm              *)
   (* 23.06.18, MRi: Hinzufuegen von zgemm                                   *)
+  (* 11.09.18, MRi: Hinzufuegen von dgemv und zgemm                         *)
   (*------------------------------------------------------------------------*)
   (* Offene Punkte                                                          *)
   (*                                                                        *)
@@ -45,7 +46,7 @@
   (* Licence : GNU Lesser General Public License (LGPL)                     *)
   (*------------------------------------------------------------------------*)
 
-  (* $Id: LibDBlasLxF77.def.m2pp,v 1.2 2018/01/16 09:19:51 mriedl Exp mriedl $ *)
+  (* $Id: LibDBlasLxF77.def.m2pp,v 1.4 2018/09/12 13:20:49 mriedl Exp mriedl $ *)
 
 FROM LibDBlasL1F77 IMPORT CHAR1,INTEGER4,REAL4,DOUBLEPRECISION,DOUBLECOMPLEX;
 
@@ -58,6 +59,53 @@
 <* IF (__MOCKA__) THEN *>
 CONST Version = "LibDBlasLxF77 for GMD Mocka";
 <* END *>
+
+PROCEDURE dgemv_(VAR Trans : CHAR1; 
+                 VAR M,N   : INTEGER4;
+                 VAR Alpha : DOUBLEPRECISION;
+                 VAR A     : (* ARRAY OF ARRAY OF *) DOUBLEPRECISION;
+                 VAR lda   : INTEGER4;
+                 VAR X     : (* ARRAY OF *) DOUBLEPRECISION;
+                 VAR IncX  : INTEGER4;
+                 VAR Beta  : DOUBLEPRECISION;
+                 VAR Y     : (* ARRAY OF *) DOUBLEPRECISION;
+                 VAR IncY  : INTEGER4);
+
+          (*----------------------------------------------------------------*)
+          (* Aufruf der Fortran Version von BLAS2 subroutine dgemv          *)
+          (*                                                                *)
+          (* Performs one of the matrix-vector operations                   *)
+          (*                                                                *)
+          (*   y = alpha*a *x + beta*y,   or                                *)
+          (*   y = alpha*a'*x + beta*y,   or;                               *)
+          (*                                                                *)
+          (* where Alpha and Beta are scalars, X and Y are vectors          *)
+          (* and A is an M by N matrix.                                     *)
+          (*----------------------------------------------------------------*)
+
+PROCEDURE zgemv_(VAR Trans : CHAR1; 
+                 VAR M,N   : INTEGER4;
+                 VAR Alpha : DOUBLECOMPLEX;
+                 VAR A     : (* ARRAY OF ARRAY OF *) DOUBLECOMPLEX;
+                 VAR lda   : INTEGER4;
+                 VAR X     : (* ARRAY OF *) DOUBLECOMPLEX;
+                 VAR IncX  : INTEGER4;
+                 VAR Beta  : DOUBLECOMPLEX;
+                 VAR Y     : (* ARRAY OF *) DOUBLECOMPLEX;
+                 VAR IncY  : INTEGER4);
+
+          (*----------------------------------------------------------------*)
+          (* Aufruf der Fortran Version von BLAS2 subroutine zgemv          *)
+          (*                                                                *)
+          (* Performs one of the matrix-vector operations                   *)
+          (*                                                                *)
+          (*   y = alpha*a *x + beta*y,   or                                *)
+          (*   y = alpha*a'*x + beta*y,   or;                               *)
+          (*   y = alpha*conjg(a')*x + beta*y,;                             *)
+          (*                                                                *)
+          (* where Alpha and Beta are scalars, X and Y are vectors          *)
+          (* and A is an M by N matrix.                                     *)
+          (*----------------------------------------------------------------*)
 
 PROCEDURE sgemm_(VAR TA    : CHAR1;
                  VAR TB    : CHAR1;
@@ -71,10 +119,10 @@
                  VAR C     : (* ARRAY OF ARRAY OF *) REAL4;
                  VAR ldc   : INTEGER4);
 
-          (*---------------------------------------------------------------*)
-          (* Matrix Matrix Multiplikatione / matrix matrix multiplication, *)
-          (* single precision version, see LibDBlas.def dgemm for details  *)
-          (*---------------------------------------------------------------*)
+          (*----------------------------------------------------------------*)
+          (* Matrix Matrix Multiplikatione / matrix matrix multiplication,  *)
+          (* single precision version, see LibDBlas.def dgemm for details   *)
+          (*----------------------------------------------------------------*)
 
 PROCEDURE dgemm_(VAR TA    : CHAR1;
                  VAR TB    : CHAR1;
@@ -88,16 +136,16 @@
                  VAR C     : (* ARRAY OF ARRAY OF *) DOUBLEPRECISION;
                  VAR ldc   : INTEGER4);
 
-          (*---------------------------------------------------------------*)
-          (* Matrix Matrix Multiplikatione / matrix matrix multiplication, *)
-          (* double precision version, see LibDBlas.def dgemm for details  *)
-          (* See   LibDBlas.def for  details                               *)
-          (*                                                               *)
-          (* Hint: There are Fortran version with unrolled loops which     *)
-          (* perform far better than the subroutines provided in the       *)
-          (* standard source. If you use an optimized BLAS level3 library  *)
-          (* (e.g. ATLAS) there is no need to take that into consideration *)
-          (*---------------------------------------------------------------*)
+          (*----------------------------------------------------------------*)
+          (* Matrix Matrix Multiplikatione / matrix matrix multiplication,  *)
+          (* double precision version, see LibDBlas.def dgemm for details   *)
+          (* See   LibDBlas.def for  details                                *)
+          (*                                                                *)
+          (* Hint: There are Fortran version with unrolled loops which      *)
+          (* perform far better than the subroutines provided in the        *)
+          (* standard source. If you use an optimized BLAS level3 library   *)
+          (* (e.g. ATLAS) there is no need to take that into consideration  *)
+          (*----------------------------------------------------------------*)
 
 PROCEDURE dgemmomp(VAR TA    : CHAR1;
                    VAR TB    : CHAR1;
@@ -111,25 +159,25 @@
                    VAR C     : (* ARRAY OF ARRAY OF *) DOUBLEPRECISION;
                    VAR ldc   : INTEGER4);
 
-          (*---------------------------------------------------------------*)
-          (* Matrix Matrix Multiplikation / matrix matrix multiplication,  *)
-          (* double precision version, see LibDBlas.def dgemm for details  *)
-          (*                                                               *)
-          (* dgemmomp is an OpenMP based version of level 3 BLAS dgemmm.   *)
-          (* dgemmomp is far from beeing optimal - please test if it is    *)
-          (* really improving the performance within your sprecific        *)
-          (* environment. On 32 bit systems the communication overhead     *)
-          (* outperforms the potential gain in speed by using more than    *)
-          (* one thread in many cases. If you set the number of threads to *)
-          (* one a version of dgemm using unrolled loops and blocking is   *)
-          (* used if the dimension of the matriced involved exeed a        *)
-          (* specific limit (see dgemmCbind.f90) so it still might be      *)
-          (* worth calling dgemmomp. dgemmomp has an explicit Fortran 2003 *)
-          (* "C" interface so no need for "_" in the function name.        *)
-          (*                                                               *)
-          (* HINT: The module OpenMPF77 permits controlling the number of  *)
-          (*       OpenMP threads used.                                    *)
-          (*---------------------------------------------------------------*)
+          (*----------------------------------------------------------------*)
+          (* Matrix Matrix Multiplikation / matrix matrix multiplication,   *)
+          (* double precision version, see LibDBlas.def dgemm for details   *)
+          (*                                                                *)
+          (* dgemmomp is an OpenMP based version of level 3 BLAS dgemmm.    *)
+          (* dgemmomp is far from beeing optimal - please test if it is     *)
+          (* really improving the performance within your sprecific         *)
+          (* environment. On 32 bit systems the communication overhead      *)
+          (* outperforms the potential gain in speed by using more than     *)
+          (* one thread in many cases. If you set the number of threads to  *)
+          (* one a version of dgemm using unrolled loops and blocking is    *)
+          (* used if the dimension of the matriced involved exeed a         *)
+          (* specific limit (see dgemmCbind.f90) so it still might be       *)
+          (* worth calling dgemmomp. dgemmomp has an explicit Fortran 2003  *)
+          (* "C" interface so no need for "_" in the function name.         *)
+          (*                                                                *)
+          (* HINT: The module OpenMPF77 permits controlling the number of   *)
+          (*       OpenMP threads used.                                     *)
+          (*----------------------------------------------------------------*)
 
 PROCEDURE dgemmomp2(VAR TA    : CHAR1;
                     VAR TB    : CHAR1;
@@ -142,9 +190,9 @@
                     VAR Beta  : DOUBLEPRECISION;
                     VAR C     : (* ARRAY OF ARRAY OF *) DOUBLEPRECISION;
                     VAR ldc   : INTEGER4);
-          (*---------------------------------------------------------------*)
-          (* Another OMP parallel version of dgemm (experimental)          *)
-          (*---------------------------------------------------------------*)
+          (*----------------------------------------------------------------*)
+          (* Another OMP parallel version of dgemm (experimental)           *)
+          (*----------------------------------------------------------------*)
 
 PROCEDURE zgemm_(VAR TA    : CHAR1;
                  VAR TB    : CHAR1;
@@ -158,9 +206,9 @@
                  VAR C     : (* ARRAY OF ARRAY OF *) DOUBLECOMPLEX;
                  VAR ldc   : INTEGER4);
 
-          (*---------------------------------------------------------------*)
-          (* Matrix Matrix Multiplikatione / matrix matrix multiplication, *)
-          (* double complex version, see LibDBlas.def dgemm for details    *)
-          (*---------------------------------------------------------------*)
+          (*----------------------------------------------------------------*)
+          (* Matrix Matrix Multiplikatione / matrix matrix multiplication,  *)
+          (* double complex version, see LibDBlas.def dgemm for details     *)
+          (*----------------------------------------------------------------*)
 
 END LibDBlasLxF77.