a/LibDBlasF77.def.m2pp b/LibDBlasF77.def.m2pp
...
...
37
  (* * idamin    : index of vector element with smalles absolute value      *)
37
  (* * idamin    : index of vector element with smalles absolute value      *)
38
  (* * dasum     : sum of absolut values of real vector elements            *)
38
  (* * dasum     : sum of absolut values of real vector elements            *)
39
  (*                                                                        *)
39
  (*                                                                        *)
40
  (*   zswap     : swap two vectors                                         *)
40
  (*   zswap     : swap two vectors                                         *)
41
  (*   zcopy     : copy a vector to a vector                                *)
41
  (*   zcopy     : copy a vector to a vector                                *)
42
  (*   zdotu     : dot product of two vectors                               *)
42
  (*   zdotc     : dot product of two vectors                               *)
43
  (*   zdotc     : dot product of two vectors                               *)
43
  (*   dznrm2    : euklidian norm of a vector                               *)
44
  (*   dznrm2    : euklidian norm of a vector                               *)
44
  (*   zscal     : scale vector by a constant                               *)
45
  (*   zscal     : scale vector by a constant                               *)
45
  (* * zaxpy     : constant times a vector plus a vector                    *)
46
  (* * zaxpy     : constant times a vector plus a vector                    *)
46
  (*   zdrot     : plane rotation                                           *)
47
  (*   zdrot     : plane rotation                                           *)
...
...
62
  (* 06.09.15, MRi: First version (only ddot)                               *)
63
  (* 06.09.15, MRi: First version (only ddot)                               *)
63
  (* 01.12.15, MRi: Added dscal,daxpy                                       *)
64
  (* 01.12.15, MRi: Added dscal,daxpy                                       *)
64
  (* 02.12.15, MRi: Added dasum,dnrm2,idamax                                *)
65
  (* 02.12.15, MRi: Added dasum,dnrm2,idamax                                *)
65
  (* 30.03.16, MRi: Added dswap                                             *)
66
  (* 30.03.16, MRi: Added dswap                                             *)
66
  (* 15.04.16, MRi: Added dcopy,drot,drotg                                  *)
67
  (* 15.04.16, MRi: Added dcopy,drot,drotg                                  *)
67
  (*                  Changed ARRAY OF DOUBLEPRECISION to                   *)
68
  (*                  Changed ARRAY OF REAL8 to                   *)
68
  (*                  (* ARRAY OF *) DOUBLEPRECISION                        *)
69
  (*                  (* ARRAY OF *) REAL8                        *)
69
  (* 29.10.17, MRi: Added dgemm                                             *)
70
  (* 29.10.17, MRi: Added dgemm                                             *)
70
  (* 01.11.17, MRi: Added idamin                                            *)
71
  (* 01.11.17, MRi: Added idamin                                            *)
71
  (* 23.06.18, MRi: Added zgemm                                             *)
72
  (* 23.06.18, MRi: Added zgemm                                             *)
72
  (* 11.09.18, MRi: Added zswap,zcopy,zdotc,dznrm2,zscal,zaxpy,zdrot        *)
73
  (* 11.09.18, MRi: Added zswap,zcopy,zdotc,dznrm2,zscal,zaxpy,zdrot        *)
73
  (*                and dgemv, zgemv                                        *)
74
  (*                and dgemv, zgemv                                        *)
74
  (*------------------------------------------------------------------------*)
75
  (*------------------------------------------------------------------------*)
75
  (* Implementation : Michael Riedl                                         *)
76
  (* Implementation : Michael Riedl                                         *)
76
  (* Licence        : GNU Lesser General Public License (LGPL)              *)
77
  (* Licence        : GNU Lesser General Public License (LGPL)              *)
77
  (*------------------------------------------------------------------------*)
78
  (*------------------------------------------------------------------------*)
78
79
79
  (* $Id: LibDBlasF77.def.m2pp,v 1.3 2018/09/12 13:20:49 mriedl Exp mriedl $ *)
80
  (* $Id: LibDBlasF77.def.m2pp,v 1.4 2019/02/01 22:24:03 mriedl Exp mriedl $ *)
80
81
81
IMPORT LibDBlasL1F77;
82
IMPORT LibDBlasL1F77;
82
IMPORT LibDBlasL2F77;
83
IMPORT LibDBlasL2F77;
83
IMPORT LibDBlasL3F77;
84
IMPORT LibDBlasL3F77;
84
85
85
TYPE DOUBLEPRECISION = LibDBlasL1F77.DOUBLEPRECISION;
86
TYPE REAL8    = LibDBlasL1F77.REAL8;
86
     INTEGER4        = LibDBlasL1F77.INTEGER4;
87
     INTEGER4 = LibDBlasL1F77.INTEGER4;
87
     CHAR1           = LibDBlasL1F77.CHAR1;
88
     CHAR1    = LibDBlasL1F77.CHAR1;
88
89
89
(*
90
(*
90
 * PROCEDURE dnrm2(VAR n    : INTEGER4;
91
 * PROCEDURE dnrm2(VAR n    : INTEGER4;
91
 *                 VAR X    : (* ARRAY OF *) DOUBLEPRECISION;
92
 *                 VAR X    : (* ARRAY OF *) REAL8;
92
 *                 VAR IncX : INTEGER4): DOUBLEPRECISION;
93
 *                 VAR IncX : INTEGER4): REAL8;
93
 *)
94
 *)
94
95
95
CONST dnrm2 = LibDBlasL1F77.dnrm2_;
96
CONST dnrm2 = LibDBlasL1F77.dnrm2_;
96
97
97
          (*----------------------------------------------------------------*)
98
          (*----------------------------------------------------------------*)
...
...
99
          (* name, so that dnrm2 := sqrt( x^{tr}*x )                        *)
100
          (* name, so that dnrm2 := sqrt( x^{tr}*x )                        *)
100
          (*----------------------------------------------------------------*)
101
          (*----------------------------------------------------------------*)
101
102
102
(*
103
(*
103
 * PROCEDURE dswap(VAR N    : INTEGER4;
104
 * PROCEDURE dswap(VAR N    : INTEGER4;
104
 *                 VAR X    : (* ARRAY OF *) DOUBLEPRECISION;  
105
 *                 VAR X    : (* ARRAY OF *) REAL8;  
105
 *                 VAR incx : INTEGER4;  
106
 *                 VAR incx : INTEGER4;  
106
 *                 VAR Y    : (* ARRAY OF *) DOUBLEPRECISION;
107
 *                 VAR Y    : (* ARRAY OF *) REAL8;
107
 *                 VAR incy : INTEGER4);
108
 *                 VAR incy : INTEGER4);
108
 *)
109
 *)
109
110
110
CONST dswap = LibDBlasL1F77.dswap_;
111
CONST dswap = LibDBlasL1F77.dswap_;
111
112
...
...
114
          (* equal to 1.                                                    *)
115
          (* equal to 1.                                                    *)
115
          (*----------------------------------------------------------------*)
116
          (*----------------------------------------------------------------*)
116
117
117
(*
118
(*
118
 * PROCEDURE dcopy(VAR N    : INTEGER4;
119
 * PROCEDURE dcopy(VAR N    : INTEGER4;
119
 *                 VAR X    : (* ARRAY OF *) DOUBLEPRECISION;
120
 *                 VAR X    : (* ARRAY OF *) REAL8;
120
 *                 VAR IncX : INTEGER4;
121
 *                 VAR IncX : INTEGER4;
121
 *                 VAR Y    : (* ARRAY OF *) DOUBLEPRECISION;
122
 *                 VAR Y    : (* ARRAY OF *) REAL8;
122
 *                 VAR IncY : INTEGER);
123
 *                 VAR IncY : INTEGER);
123
 *)
124
 *)
124
125
125
CONST dcopy = LibDBlasL1F77.dcopy_;
126
CONST dcopy = LibDBlasL1F77.dcopy_;
126
127
...
...
130
          (* jack dongarra, linpack, 3/11/78.                               *)
131
          (* jack dongarra, linpack, 3/11/78.                               *)
131
          (*----------------------------------------------------------------*)
132
          (*----------------------------------------------------------------*)
132
133
133
(*
134
(*
134
 * PROCEDURE drot(VAR N    : INTEGER4;  
135
 * PROCEDURE drot(VAR N    : INTEGER4;  
135
 *                VAR X    : (* ARRAY OF *) DOUBLEPRECISION;  
136
 *                VAR X    : (* ARRAY OF *) REAL8;  
136
 *                VAR incX : INTEGER4;
137
 *                VAR incX : INTEGER4;
137
 *                VAR Y    : (* ARRAY OF *) DOUBLEPRECISION;
138
 *                VAR Y    : (* ARRAY OF *) REAL8;
138
 *                VAR incY : INTEGER4; 
139
 *                VAR incY : INTEGER4; 
139
 *                VAR c,s  : DOUBLEPRECISION);
140
 *                VAR c,s  : REAL8);
140
 *)
141
 *)
141
142
142
CONST drot = LibDBlasL1F77.drot_;
143
CONST drot = LibDBlasL1F77.drot_;
143
144
144
          (*---------------------------------------------------------------*)
145
          (*---------------------------------------------------------------*)
145
          (* Applies a plane rotation.                                     *)
146
          (* Applies a plane rotation.                                     *)
146
          (* Jack Dongarra, linpack, 3/11/78.                              *)
147
          (* Jack Dongarra, linpack, 3/11/78.                              *)
147
          (*---------------------------------------------------------------*)
148
          (*---------------------------------------------------------------*)
148
149
149
(*
150
(*
150
 * PROCEDURE drotg(VAR da : DOUBLEPRECISION;  
151
 * PROCEDURE drotg(VAR da : REAL8;  
151
 *                 VAR db : DOUBLEPRECISION;  
152
 *                 VAR db : REAL8;  
152
 *                 VAR c  : DOUBLEPRECISION;  
153
 *                 VAR c  : REAL8;  
153
 *                 VAR s  : DOUBLEPRECISION);
154
 *                 VAR s  : REAL8);
154
 *)
155
 *)
155
156
156
CONST drotg = LibDBlasL1F77.drotg_;
157
CONST drotg = LibDBlasL1F77.drotg_;
157
158
158
          (*---------------------------------------------------------------*)
159
          (*---------------------------------------------------------------*)
...
...
160
          (* Jack Dongarra, linpack, 3/11/78.                              *)
161
          (* Jack Dongarra, linpack, 3/11/78.                              *)
161
          (*---------------------------------------------------------------*)
162
          (*---------------------------------------------------------------*)
162
163
163
(*
164
(*
164
 * PROCEDURE dscal(VAR n    : INTEGER4;
165
 * PROCEDURE dscal(VAR n    : INTEGER4;
165
 *                 VAR da   : DOUBLEPRECISION;
166
 *                 VAR da   : REAL8;
166
 *                 VAR dx   : (* ARRAY OF *) DOUBLEPRECISION; 
167
 *                 VAR dx   : (* ARRAY OF *) REAL8; 
167
 *                 VAR incx : INTEGER4);
168
 *                 VAR incx : INTEGER4);
168
 *)
169
 *)
169
170
170
CONST dscal = LibDBlasL1F77.dscal_;
171
CONST dscal = LibDBlasL1F77.dscal_;
171
172
...
...
173
          (* Scales a vector by a constant                                  *)
174
          (* Scales a vector by a constant                                  *)
174
          (*----------------------------------------------------------------*)
175
          (*----------------------------------------------------------------*)
175
176
176
(*
177
(*
177
 * PROCEDURE daxpy(VAR n    : INTEGER4;
178
 * PROCEDURE daxpy(VAR n    : INTEGER4;
178
 *                 VAR da   : DOUBLEPRECISION;
179
 *                 VAR da   : REAL8;
179
 *                 VAR dx   : (* ARRAY OF *) DOUBLEPRECISION; 
180
 *                 VAR dx   : (* ARRAY OF *) REAL8; 
180
 *                 VAR incx : INTEGER4;
181
 *                 VAR incx : INTEGER4;
181
 *                 VAR dy   : (* ARRAY OF *) DOUBLEPRECISION; 
182
 *                 VAR dy   : (* ARRAY OF *) REAL8; 
182
 *                 VAR incy : INTEGER4);
183
 *                 VAR incy : INTEGER4);
183
 *)
184
 *)
184
185
185
CONST daxpy = LibDBlasL1F77.daxpy_;
186
CONST daxpy = LibDBlasL1F77.daxpy_;
186
187
...
...
188
          (* Constant times a vector plus a vector                          *)
189
          (* Constant times a vector plus a vector                          *)
189
          (*----------------------------------------------------------------*)
190
          (*----------------------------------------------------------------*)
190
191
191
(*
192
(*
192
 * PROCEDURE ddot(VAR N    : INTEGER4;
193
 * PROCEDURE ddot(VAR N    : INTEGER4;
193
 *                VAR DX   : (* ARRAY OF *) DOUBLEPRECISION;
194
 *                VAR DX   : (* ARRAY OF *) REAL8;
194
 *                VAR INCX : INTEGER4;
195
 *                VAR INCX : INTEGER4;
195
 *                VAR DY   : (* ARRAY OF *) DOUBLEPRECISION;
196
 *                VAR DY   : (* ARRAY OF *) REAL8;
196
 *                VAR INCY : INTEGER4) : DOUBLEPRECISION;
197
 *                VAR INCY : INTEGER4) : REAL8;
197
 *)
198
 *)
198
199
199
CONST ddot = LibDBlasL1F77.ddot_;
200
CONST ddot = LibDBlasL1F77.ddot_;
200
201
201
          (*----------------------------------------------------------------*)
202
          (*----------------------------------------------------------------*)
202
          (* Forms the dot product of two vectors                           *)
203
          (* Forms the dot product of two vectors                           *)
203
          (*----------------------------------------------------------------*)
204
          (*----------------------------------------------------------------*)
204
205
205
(*
206
(*
206
 * PROCEDURE idamax(VAR n    : INTEGER4;
207
 * PROCEDURE idamax(VAR n    : INTEGER4;
207
 *                  VAR dx   : (* ARRAY OF *) DOUBLEPRECISION;
208
 *                  VAR dx   : (* ARRAY OF *) REAL8;
208
 *                  VAR incx : INTEGER4) : INTEGER4;
209
 *                  VAR incx : INTEGER4) : INTEGER4;
209
 *)
210
 *)
210
211
211
CONST idamax = LibDBlasL1F77.idamax_;
212
CONST idamax = LibDBlasL1F77.idamax_;
212
213
...
...
214
          (* Finds the index of element having max. absolute value.         *)
215
          (* Finds the index of element having max. absolute value.         *)
215
          (*----------------------------------------------------------------*)
216
          (*----------------------------------------------------------------*)
216
217
217
(*
218
(*
218
 * PROCEDURE idamin(VAR n    : INTEGER4;
219
 * PROCEDURE idamin(VAR n    : INTEGER4;
219
 *                  VAR dx   : (* ARRAY OF *) DOUBLEPRECISION;
220
 *                  VAR dx   : (* ARRAY OF *) REAL8;
220
 *                  VAR incx : INTEGER4) : INTEGER4;
221
 *                  VAR incx : INTEGER4) : INTEGER4;
221
 *)
222
 *)
222
223
223
CONST idamin = LibDBlasL1F77.idamin_;
224
CONST idamin = LibDBlasL1F77.idamin_;
224
225
...
...
226
          (* Finds the index of element having min. absolute value.         *)
227
          (* Finds the index of element having min. absolute value.         *)
227
          (*----------------------------------------------------------------*)
228
          (*----------------------------------------------------------------*)
228
229
229
(*
230
(*
230
 * PROCEDURE dasum(VAR dim      : INTEGER4;
231
 * PROCEDURE dasum(VAR dim      : INTEGER4;
231
 *                 VAR X        : (* ARRAY OF *) DOUBLEPRECISION;
232
 *                 VAR X        : (* ARRAY OF *) REAL8;
232
 *                 VAR Inc      : INTEGER4) : DOUBLEPRECISION;
233
 *                 VAR Inc      : INTEGER4) : REAL8;
233
 *)
234
 *)
234
235
235
CONST dasum = LibDBlasL1F77.dasum_;
236
CONST dasum = LibDBlasL1F77.dasum_;
236
237
237
          (*----------------------------------------------------------------*)
238
          (*----------------------------------------------------------------*)
...
...
240
          (*----------------------------------------------------------------*)
241
          (*----------------------------------------------------------------*)
241
242
242
(*
243
(*
243
 * PROCEDURE dgemv(    Trans  : CHAR1;
244
 * PROCEDURE dgemv(    Trans  : CHAR1;
244
 *                     M,N    : INTEGER4;
245
 *                     M,N    : INTEGER4;
245
 *                     Alpha  : DOUBLEPRECISION;
246
 *                     Alpha  : REAL8;
246
 *                 VAR A      : ARRAY OF ARRAY OF DOUBLEPRECISION;
247
 *                 VAR A      : ARRAY OF ARRAY OF REAL8;
247
 *                     LDA    : INTEGER4;
248
 *                     LDA    : INTEGER4;
248
 *                 VAR X      : ARRAY OF DOUBLEPRECISION;
249
 *                 VAR X      : ARRAY OF REAL8;
249
 *                     IncX   : INTEGER4;
250
 *                     IncX   : INTEGER4;
250
 *                     Beta   : DOUBLEPRECISION;
251
 *                     Beta   : REAL8;
251
 *                 VAR Y      : ARRAY OF DOUBLEPRECISION;
252
 *                 VAR Y      : ARRAY OF REAL8;
252
 *                     IncY   : INTEGER4);
253
 *                     IncY   : INTEGER4);
253
 *)
254
 *)
254
255
255
CONST dgemv = LibDBlasL2F77.dgemv;
256
CONST dgemv = LibDBlasL2F77.dgemv;
256
257
...
...
288
289
289
(*
290
(*
290
 * PROCEDURE dgemm(    TA    : CHAR1;
291
 * PROCEDURE dgemm(    TA    : CHAR1;
291
 *                     TB    : CHAR1;
292
 *                     TB    : CHAR1;
292
 *                     M,N,K : INTEGER4;
293
 *                     M,N,K : INTEGER4;
293
 *                     Alpha : DOUBLEPRECISION;
294
 *                     Alpha : REAL8;
294
 *                 VAR A     : ARRAY OF ARRAY OF DOUBLEPRECISION;
295
 *                 VAR A     : ARRAY OF ARRAY OF REAL8;
295
 *                     lda   : INTEGER4;
296
 *                     lda   : INTEGER4;
296
 *                 VAR B     : ARRAY OF ARRAY OF DOUBLEPRECISION;
297
 *                 VAR B     : ARRAY OF ARRAY OF REAL8;
297
 *                     ldb   : INTEGER4;
298
 *                     ldb   : INTEGER4;
298
 *                     Beta  : DOUBLEPRECISION;
299
 *                     Beta  : REAL8;
299
 *                 VAR C     : ARRAY OF ARRAY OF DOUBLEPRECISION;
300
 *                 VAR C     : ARRAY OF ARRAY OF REAL8;
300
 *                     ldc   : INTEGER4);
301
 *                     ldc   : INTEGER4);
301
 *)
302
 *)
302
303
303
<* IF (__OPENMP__) THEN *>
304
<* IF (__OPENMP__) THEN *>
304
CONST dgemm = LibDBlasL3F77.dgemmOMP;
305
CONST dgemm = LibDBlasL3F77.dgemmOMP;
...
...
336
337
337
(*=========================== Complex valued procedures ====================*)
338
(*=========================== Complex valued procedures ====================*)
338
339
339
(*
340
(*
340
 * PROCEDURE zswap(VAR N    : INTEGER4;
341
 * PROCEDURE zswap(VAR N    : INTEGER4;
341
 *                 VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
342
 *                 VAR X    : (* ARRAY OF *) COMPLEX16;
342
 *                 VAR IncX : INTEGER4;
343
 *                 VAR IncX : INTEGER4;
343
 *                 VAR Y    : (* ARRAY OF *) DOUBLECOMPLEX;
344
 *                 VAR Y    : (* ARRAY OF *) COMPLEX16;
344
 *                 VAR IncY : INTEGER4);
345
 *                 VAR IncY : INTEGER4);
345
 *)
346
 *)
346
347
347
CONST zswap = LibDBlasL1F77.zswap_;
348
CONST zswap = LibDBlasL1F77.zswap_;
348
349
...
...
350
          (* Swap complex vectors X and Y                                   *)
351
          (* Swap complex vectors X and Y                                   *)
351
          (*----------------------------------------------------------------*)
352
          (*----------------------------------------------------------------*)
352
353
353
(*
354
(*
354
 * PROCEDURE zcopy(VAR N    : INTEGER4;
355
 * PROCEDURE zcopy(VAR N    : INTEGER4;
355
 *                 VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
356
 *                 VAR X    : (* ARRAY OF *) COMPLEX16;
356
 *                 VAR IncX : INTEGER4;
357
 *                 VAR IncX : INTEGER4;
357
 *                 VAR Y    : (* ARRAY OF *) DOUBLECOMPLEX;
358
 *                 VAR Y    : (* ARRAY OF *) COMPLEX16;
358
 *                 VAR IncY : INTEGER4);
359
 *                 VAR IncY : INTEGER4);
359
 *)
360
 *)
360
361
361
CONST zcopy = LibDBlasL1F77.zcopy_;
362
CONST zcopy = LibDBlasL1F77.zcopy_;
362
363
...
...
367
          (* MRi, Modula-2 10.04.16 | 09.09.18 (complex version)            *)
368
          (* MRi, Modula-2 10.04.16 | 09.09.18 (complex version)            *)
368
          (*----------------------------------------------------------------*)
369
          (*----------------------------------------------------------------*)
369
370
370
(*
371
(*
371
 * PROCEDURE zdotc(VAR N    : INTEGER4;
372
 * PROCEDURE zdotc(VAR N    : INTEGER4;
372
 *                 VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
373
 *                 VAR X    : (* ARRAY OF *) COMPLEX16;
373
 *                 VAR IncX : INTEGER4;
374
 *                 VAR IncX : INTEGER4;
374
 *                 VAR Y    : (* ARRAY OF *) DOUBLECOMPLEX;
375
 *                 VAR Y    : (* ARRAY OF *) COMPLEX16;
375
 *                 VAR IncY : INTEGER4) : DOUBLECOMPLEX;
376
 *                 VAR IncY : INTEGER4) : COMPLEX16;
376
 *)
377
 *)
377
378
378
CONST zdotc = LibDBlasL1F77.zdotc_;
379
CONST zdotc = LibDBlasL1F77.zdotc_;
379
380
380
          (*----------------------------------------------------------------*)
381
          (*----------------------------------------------------------------*)
...
...
382
          (* increments equal to one.                                       *)
383
          (* increments equal to one.                                       *)
383
          (*----------------------------------------------------------------*)
384
          (*----------------------------------------------------------------*)
384
385
385
(*
386
(*
386
 * PROCEDURE dznrm2(VAR N    : INTEGER4;
387
 * PROCEDURE dznrm2(VAR N    : INTEGER4;
387
 *                  VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
388
 *                  VAR X    : (* ARRAY OF *) COMPLEX16;
388
 *                  VAR IncX : INTEGER4) : DOUBLEPRECISION;
389
 *                  VAR IncX : INTEGER4) : REAL8;
389
 *)
390
 *)
390
391
391
CONST dznrm2 = LibDBlasL1F77.dznrm2_;
392
CONST dznrm2 = LibDBlasL1F77.dznrm2_;
392
393
393
          (*----------------------------------------------------------------*)
394
          (*----------------------------------------------------------------*)
...
...
395
          (* dznrm2 := sqrt( X**H*X )                                       *)
396
          (* dznrm2 := sqrt( X**H*X )                                       *)
396
          (*----------------------------------------------------------------*)
397
          (*----------------------------------------------------------------*)
397
398
398
(*
399
(*
399
 * PROCEDURE zscal(VAR n    : INTEGER4;
400
 * PROCEDURE zscal(VAR n    : INTEGER4;
400
 *                 VAR da   : DOUBLECOMPLEX;
401
 *                 VAR da   : COMPLEX16;
401
 *                 VAR dx   : (* ARRAY OF *) DOUBLECOMPLEX;
402
 *                 VAR dx   : (* ARRAY OF *) COMPLEX16;
402
 *                 VAR IncX : INTEGER4);
403
 *                 VAR IncX : INTEGER4);
403
 *)
404
 *)
404
405
405
CONST zscal = LibDBlasL1F77.zscal_;
406
CONST zscal = LibDBlasL1F77.zscal_;
406
407
...
...
408
          (* Scales a vector by a constant (UNROLLED version)               *)
409
          (* Scales a vector by a constant (UNROLLED version)               *)
409
          (*----------------------------------------------------------------*)
410
          (*----------------------------------------------------------------*)
410
411
411
(*
412
(*
412
 * PROCEDURE zaxpy(VAR n    : INTEGER4;
413
 * PROCEDURE zaxpy(VAR n    : INTEGER4;
413
 *                 VAR da   : DOUBLECOMPLEX;
414
 *                 VAR da   : COMPLEX16;
414
 *                 VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
415
 *                 VAR X    : (* ARRAY OF *) COMPLEX16;
415
 *                 VAR IncX : INTEGER4;
416
 *                 VAR IncX : INTEGER4;
416
 *                 VAR Y    : (* ARRAY OF *) DOUBLECOMPLEX;
417
 *                 VAR Y    : (* ARRAY OF *) COMPLEX16;
417
 *                 VAR IncY : INTEGER4);
418
 *                 VAR IncY : INTEGER4);
418
 *)
419
 *)
419
420
420
CONST zaxpy = LibDBlasL1F77.zaxpy_;
421
CONST zaxpy = LibDBlasL1F77.zaxpy_;
421
422
...
...
424
          (* constant times a vector plus a vector                          *)
425
          (* constant times a vector plus a vector                          *)
425
          (*----------------------------------------------------------------*)
426
          (*----------------------------------------------------------------*)
426
427
427
(*
428
(*
428
 * PROCEDURE zdrot(VAR N    : INTEGER4;
429
 * PROCEDURE zdrot(VAR N    : INTEGER4;
429
 *                 VAR X    : (* ARRAY OF *) DOUBLECOMPLEX;
430
 *                 VAR X    : (* ARRAY OF *) COMPLEX16;
430
 *                 VAR IncX : INTEGER4;
431
 *                 VAR IncX : INTEGER4;
431
 *                 VAR Y    : (* ARRAY OF *) DOUBLECOMPLEX;
432
 *                 VAR Y    : (* ARRAY OF *) COMPLEX16;
432
 *                 VAR IncY : INTEGER4;
433
 *                 VAR IncY : INTEGER4;
433
 *                 VAR c,s  : REAL4);
434
 *                 VAR c,s  : REAL4);
434
 *)
435
 *)
435
436
436
CONST zdrot = LibDBlasL1F77.zdrot_;
437
CONST zdrot = LibDBlasL1F77.zdrot_;
...
...
473
474
474
(*
475
(*
475
 * PROCEDURE zgemm(    TA    : CHAR1;
476
 * PROCEDURE zgemm(    TA    : CHAR1;
476
 *                     TB    : CHAR1;
477
 *                     TB    : CHAR1;
477
 *                     M,N,K : INTEGER4;
478
 *                     M,N,K : INTEGER4;
478
 *                     Alpha : DOUBLECOMPLEX;
479
 *                     Alpha : COMPLEX16;
479
 *                 VAR A     : ARRAY OF ARRAY OF DOUBLECOMPLEX;
480
 *                 VAR A     : ARRAY OF ARRAY OF COMPLEX16;
480
 *                     lda   : INTEGER4;
481
 *                     lda   : INTEGER4;
481
 *                 VAR B     : ARRAY OF ARRAY OF DOUBLECOMPLEX;
482
 *                 VAR B     : ARRAY OF ARRAY OF COMPLEX16;
482
 *                     ldb   : INTEGER4;
483
 *                     ldb   : INTEGER4;
483
 *                     Beta  : DOUBLECOMPLEX;
484
 *                     Beta  : COMPLEX16;
484
 *                 VAR C     : ARRAY OF ARRAY OF DOUBLECOMPLEX;
485
 *                 VAR C     : ARRAY OF ARRAY OF COMPLEX16;
485
 *                     ldc   : INTEGER4);
486
 *                     ldc   : INTEGER4);
486
 *)
487
 *)
487
488
488
CONST zgemm = LibDBlasL3F77.zgemm;
489
CONST zgemm = LibDBlasL3F77.zgemm;
489
490