--- a
+++ b/LibDBlasL1F77.def.m2pp
@@ -0,0 +1,195 @@
+<* IF (__XDS__) THEN *>
+DEFINITION MODULE ["C"] LibDBlasL1F77; (* XDS *)
+<* END *>
+<* IF (__GM2__) THEN *>
+DEFINITION MODULE FOR "C" LibDBlasL1F77; (* GNU M2 *)
+<* END *>
+<* IF (__MOCKA__) THEN *>
+FOREIGN MODULE LibDBlasL1F77; (* Mocka *)
+<* END *>
+
+ (*========================================================================*)
+ (* WICHTIG: BITTE NUR DIE DATEI LibDBlasL1F77.def.m2pp EDITIEREN !!! *)
+ (*========================================================================*)
+ (* Es sind 3 Versionen enthalten die mit *)
+ (* *)
+ (* m2pp -D __{Parameter}__ < LibDBlasL1F77.mod.m2pp > LibDBlasL1F77.mod *)
+ (* *)
+ (* mit Parameter = {XDS|GM2|MOCKA} erzeugt werden koennen. *)
+ (* *)
+ (* GM2 : Definitionsmodul im Stil des GM2 M2 Compilers *)
+ (* XDS : Definitionsmodul im Stil des XDS M2 Compilers *)
+ (* Mocka : Definitionsmodul im Stil des Mocka Compilers *)
+ (* *)
+ (* ansonsten gibt es keine Aenderungen am Quellcode *)
+ (*------------------------------------------------------------------------*)
+ (* Schnittstelle zu blas level 1 FORTRAN 77 subroutinen. *)
+ (* Interface to dblas level 1 FORTRAN 77 subroutines. *)
+ (* *)
+ (* Jack Dongarra, linpack, 3/11/78. *)
+ (* *)
+ (* To Do: Lot of other routines ;-) *)
+ (* *)
+ (* Routine provided so far are: *)
+ (* *)
+ (* dnrm2 : euklidian norm of a vector *)
+ (* * dswap : swap two vectors *)
+ (* * dcopy : copy a vector to a vector *)
+ (* drot : plane rotation *)
+ (* drotg : construct givens rotation *)
+ (* * dscal : scale vector by a constant *)
+ (* * daxpy : constant times a vector plus a vector *)
+ (* * ddot : dot product of two vectors *)
+ (* * idamax : index of vector element with largest absolute value *)
+ (*------------------------------------------------------------------------*)
+ (* Last change: *)
+ (* *)
+ (* 06.09.15, MRi: First version (only ddot) *)
+ (* 01.12.15, MRi: Added dscal,daxpy *)
+ (* 02.12.15, MRi: Added dasum,dnrm2,idamax *)
+ (* 30.03.16, MRi: Added dswap *)
+ (* 15.04.16, MRi: Added dcopy,drot,drotg *)
+ (* Changed ARRAY OF DOUBLEPRECISION to *)
+ (* (* ARRAY OF *) DOUBLEPRECISION *)
+ (* 01.11.17, MRi: Added idamin, made preprocessor interface *)
+ (*------------------------------------------------------------------------*)
+ (* Implementation : Michael Riedl *)
+ (* Licence : GNU Lesser General Public License (LGPL) *)
+ (*------------------------------------------------------------------------*)
+
+ (* $Id: LibDBlasL1F77.def.m2pp,v 1.3 2018/01/16 09:19:51 mriedl Exp mriedl $ *)
+
+<* IF (__XDS__) THEN *>
+CONST Version = "LibDBlasL1F77 for XDS Modula-2";
+
+TYPE DOUBLEPRECISION = LONGREAL;
+ REAL4 = REAL;
+ INTEGER4 = LONGINT;
+<* END *>
+<* IF (__GM2__) THEN *>
+CONST Version = "LibDBlasL1F77 for GNU Modula-2";
+
+TYPE DOUBLEPRECISION = REAL; (* Untested !!! *)
+ REAL4 = SHORTREAL;
+ INTEGER4 = INTEGER;
+<* END *>
+<* IF (__MOCKA__) THEN *>
+CONST Version = "LibDBlasL1F77 for GMD Mocka";
+
+TYPE DOUBLEPRECISION = LONGREAL;
+ REAL4 = REAL;
+ INTEGER4 = LONGINT;
+<* END *>
+ CHAR1 = CHAR;
+
+PROCEDURE dnrm2_(VAR n : INTEGER4;
+ VAR X : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR IncX : INTEGER4): DOUBLEPRECISION;
+
+ (*----------------------------------------------------------------*)
+ (* dnrm2 returns the euclidean norm of a vector via the function *)
+ (* name, so that dnrm2 := sqrt( x'*x ) *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE dswap_(VAR N : INTEGER4;
+ VAR X : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incx : INTEGER4;
+ VAR Y : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incy : INTEGER4);
+
+ (*----------------------------------------------------------------*)
+ (* Interchanges two vectors using unrolled loops for increments *)
+ (* equal to 1. *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE dcopy_(VAR N : INTEGER4;
+ VAR X : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR IncX : INTEGER4;
+ VAR Y : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR IncY : INTEGER);
+
+ (*----------------------------------------------------------------*)
+ (* copies a vector, x, to a vector, y. *)
+ (* uses unrolled loops for increments equal to one. *)
+ (* jack dongarra, linpack, 3/11/78. *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE drot_(VAR N : INTEGER4;
+ VAR X : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incX : INTEGER4;
+ VAR Y : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incY : INTEGER4;
+ VAR c,s : DOUBLEPRECISION);
+
+ (*---------------------------------------------------------------*)
+ (* Applies a plane rotation. *)
+ (* Jack Dongarra, linpack, 3/11/78. *)
+ (*---------------------------------------------------------------*)
+
+PROCEDURE drotg_(VAR da : DOUBLEPRECISION;
+ VAR db : DOUBLEPRECISION;
+ VAR c : DOUBLEPRECISION;
+ VAR s : DOUBLEPRECISION);
+
+ (*---------------------------------------------------------------*)
+ (* Construct a Givens plane rotation *)
+ (* Jack Dongarra, linpack, 3/11/78. *)
+ (*---------------------------------------------------------------*)
+
+PROCEDURE dscal_(VAR n : INTEGER4;
+ VAR da : DOUBLEPRECISION;
+ VAR dx : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incx : INTEGER4);
+
+ (*----------------------------------------------------------------*)
+ (* Scales a vector by a constant *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE daxpy_(VAR n : INTEGER4;
+ VAR da : DOUBLEPRECISION;
+ VAR dx : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incx : INTEGER4;
+ VAR dy : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incy : INTEGER4);
+
+ (*----------------------------------------------------------------*)
+ (* Constant times a vector plus a vector *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE ddot_(VAR N : INTEGER4;
+ VAR DX : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR INCX : INTEGER4;
+ VAR DY : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR INCY : INTEGER4) : DOUBLEPRECISION;
+
+ (*----------------------------------------------------------------*)
+ (* Forms the dot product of two vectors *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE idamax_(VAR n : INTEGER4;
+ VAR dx : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incx : INTEGER4) : INTEGER4;
+
+ (*----------------------------------------------------------------*)
+ (* Finds the index of element having max. absolute value. *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE idamin_(VAR n : INTEGER4;
+ VAR dx : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR incx : INTEGER4) : INTEGER4;
+
+ (*----------------------------------------------------------------*)
+ (* Finds the index of element having min. absolute value. *)
+ (*----------------------------------------------------------------*)
+
+PROCEDURE dasum_(VAR dim : INTEGER4;
+ VAR X : (* ARRAY OF *) DOUBLEPRECISION;
+ VAR Inc : INTEGER4) : DOUBLEPRECISION;
+
+ (*----------------------------------------------------------------*)
+ (* Berechnet die Summe der Absolutwerte der im Feld X gespeich- *)
+ (* erten Zahlen. *)
+ (*----------------------------------------------------------------*)
+
+END LibDBlasL1F77.
+