]> gitweb.factorcode.org Git - factor.git/blob - basis/math/blas/ffi/ffi.factor
use a different abi on linux for fortran
[factor.git] / basis / math / blas / ffi / ffi.factor
1 USING: alien alien.fortran kernel system combinators
2 alien.libraries ;
3 IN: math.blas.ffi
4
5 <<
6 "blas" {
7     { [ os macosx? ] [ "libblas.dylib" intel-unix-abi add-fortran-library ] }
8     { [ os windows? cpu x86.32? and ] [ "blas.dll" f2c-abi add-fortran-library ] }
9     { [ os windows? cpu x86.64? and ] [ "blas.dll" gfortran-abi add-fortran-library ] }
10     { [ os [ freebsd? ] [ linux? ] bi or ] [ "libblas.so" gfortran-abi add-fortran-library ] }
11     [ "libblas.so" f2c-abi add-fortran-library ]
12 } cond
13 >>
14
15 LIBRARY: blas
16
17 ! Level 1 BLAS (scalar-vector and vector-vector)
18
19 FUNCTION: REAL SDSDOT
20     ( INTEGER N, REAL ALPHA, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
21 FUNCTION: DOUBLE-PRECISION DSDOT
22     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
23 FUNCTION: REAL SDOT
24     ( INTEGER N, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
25 FUNCTION: DOUBLE-PRECISION DDOT
26     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
27
28 FUNCTION: COMPLEX CDOTU
29     ( INTEGER N, COMPLEX(*) X, INTEGER INCX, COMPLEX(*) Y, INTEGER INCY ) ;
30 FUNCTION: COMPLEX CDOTC
31     ( INTEGER N, COMPLEX(*) X, INTEGER INCX, COMPLEX(*) Y, INTEGER INCY ) ;
32
33 FUNCTION: DOUBLE-COMPLEX ZDOTU
34     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
35 FUNCTION: DOUBLE-COMPLEX ZDOTC
36     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
37
38 FUNCTION: REAL SNRM2
39     ( INTEGER N, REAL(*) X, INTEGER INCX ) ;
40 FUNCTION: REAL SASUM
41     ( INTEGER N, REAL(*) X, INTEGER INCX ) ;
42
43 FUNCTION: DOUBLE-PRECISION DNRM2
44     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
45 FUNCTION: DOUBLE-PRECISION DASUM
46     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
47
48 FUNCTION: REAL SCNRM2
49     ( INTEGER N, COMPLEX(*) X, INTEGER INCX ) ;
50 FUNCTION: REAL SCASUM
51     ( INTEGER N, COMPLEX(*) X, INTEGER INCX ) ;
52
53 FUNCTION: DOUBLE-PRECISION DZNRM2
54     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
55 FUNCTION: DOUBLE-PRECISION DZASUM
56     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
57
58 FUNCTION: INTEGER ISAMAX
59     ( INTEGER N, REAL(*) X, INTEGER INCX ) ;
60 FUNCTION: INTEGER IDAMAX
61     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
62 FUNCTION: INTEGER ICAMAX
63     ( INTEGER N, COMPLEX(*) X, INTEGER INCX ) ;
64 FUNCTION: INTEGER IZAMAX
65     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
66
67 SUBROUTINE: SSWAP
68     ( INTEGER N, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
69 SUBROUTINE: SCOPY
70     ( INTEGER N, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
71 SUBROUTINE: SAXPY
72     ( INTEGER N, REAL ALPHA, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY ) ;
73
74 SUBROUTINE: DSWAP
75     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
76 SUBROUTINE: DCOPY
77     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
78 SUBROUTINE: DAXPY
79     ( INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
80
81 SUBROUTINE: CSWAP
82     ( INTEGER N, COMPLEX(*) X, INTEGER INCX, COMPLEX(*) Y, INTEGER INCY ) ;
83 SUBROUTINE: CCOPY
84     ( INTEGER N, COMPLEX(*) X, INTEGER INCX, COMPLEX(*) Y, INTEGER INCY ) ;
85 SUBROUTINE: CAXPY
86     ( INTEGER N, COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX, COMPLEX(*) Y, INTEGER INCY ) ;
87
88 SUBROUTINE: ZSWAP
89     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
90 SUBROUTINE: ZCOPY
91     ( INTEGER N, DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
92 SUBROUTINE: ZAXPY
93     ( INTEGER N, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
94
95 SUBROUTINE: SSCAL
96     ( INTEGER N, REAL ALPHA, REAL(*) X, INTEGER INCX ) ;
97 SUBROUTINE: DSCAL
98     ( INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
99 SUBROUTINE: CSCAL
100     ( INTEGER N, COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX ) ;
101 SUBROUTINE: ZSCAL
102     ( INTEGER N, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
103 SUBROUTINE: CSSCAL
104     ( INTEGER N, REAL ALPHA, COMPLEX(*) X, INTEGER INCX ) ;
105 SUBROUTINE: ZDSCAL
106     ( INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
107
108 SUBROUTINE: SROTG
109     ( REAL(*) A, REAL(*) B, REAL(*) C, REAL(*) S ) ;
110 SUBROUTINE: SROTMG
111     ( REAL(*) D1, REAL(*) D2, REAL(*) B1, REAL B2, REAL(*) P ) ;
112 SUBROUTINE: SROT
113     ( INTEGER N, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY, REAL C, REAL S ) ;
114 SUBROUTINE: SROTM
115     ( INTEGER N, REAL(*) X, INTEGER INCX, REAL(*) Y, INTEGER INCY, REAL(*) P ) ;
116
117 SUBROUTINE: DROTG
118     ( DOUBLE-PRECISION(*) A, DOUBLE-PRECISION(*) B, DOUBLE-PRECISION(*) C, DOUBLE-PRECISION(*) S ) ;
119 SUBROUTINE: DROTMG
120     ( DOUBLE-PRECISION(*) D1, DOUBLE-PRECISION(*) D2, DOUBLE-PRECISION(*) B1, DOUBLE-PRECISION B2, DOUBLE-PRECISION(*) P ) ;
121 SUBROUTINE: DROT
122     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY, DOUBLE-PRECISION C, DOUBLE-PRECISION S ) ;
123 SUBROUTINE: DROTM
124     ( INTEGER N, DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY, DOUBLE-PRECISION(*) P ) ;
125  
126 ! LEVEL 2 BLAS (MATRIX-VECTOR)
127
128 SUBROUTINE: SGEMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
129                  REAL ALPHA, REAL(*) A, INTEGER LDA,
130                  REAL(*) X, INTEGER INCX, REAL BETA,
131                  REAL(*) Y, INTEGER INCY ) ;
132 SUBROUTINE: SGBMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
133                  INTEGER KL, INTEGER KU, REAL ALPHA,
134                  REAL(*) A, INTEGER LDA, REAL(*) X,
135                  INTEGER INCX, REAL BETA, REAL(*) Y, INTEGER INCY ) ;
136 SUBROUTINE: STRMV ( CHARACTER*1 UPLO,
137                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
138                  INTEGER N, REAL(*) A, INTEGER LDA,
139                  REAL(*) X, INTEGER INCX ) ;
140 SUBROUTINE: STBMV ( CHARACTER*1 UPLO,
141                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
142                  INTEGER N, INTEGER K, REAL(*) A, INTEGER LDA,
143                  REAL(*) X, INTEGER INCX ) ;
144 SUBROUTINE: STPMV ( CHARACTER*1 UPLO,
145                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
146                  INTEGER N, REAL(*) AP, REAL(*) X, INTEGER INCX ) ;
147 SUBROUTINE: STRSV ( CHARACTER*1 UPLO,
148                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
149                  INTEGER N, REAL(*) A, INTEGER LDA, REAL(*) X,
150                  INTEGER INCX ) ;
151 SUBROUTINE: STBSV ( CHARACTER*1 UPLO,
152                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
153                  INTEGER N, INTEGER K, REAL(*) A, INTEGER LDA,
154                  REAL(*) X, INTEGER INCX ) ;
155 SUBROUTINE: STPSV ( CHARACTER*1 UPLO,
156                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
157                  INTEGER N, REAL(*) AP, REAL(*) X, INTEGER INCX ) ;
158
159 SUBROUTINE: DGEMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
160                  DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
161                  DOUBLE-PRECISION(*) X, INTEGER INCX, DOUBLE-PRECISION BETA,
162                  DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
163 SUBROUTINE: DGBMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
164                  INTEGER KL, INTEGER KU, DOUBLE-PRECISION ALPHA,
165                  DOUBLE-PRECISION(*) A, INTEGER LDA, DOUBLE-PRECISION(*) X,
166                  INTEGER INCX, DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
167 SUBROUTINE: DTRMV ( CHARACTER*1 UPLO,
168                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
169                  INTEGER N, DOUBLE-PRECISION(*) A, INTEGER LDA,
170                  DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
171 SUBROUTINE: DTBMV ( CHARACTER*1 UPLO,
172                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
173                  INTEGER N, INTEGER K, DOUBLE-PRECISION(*) A, INTEGER LDA,
174                  DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
175 SUBROUTINE: DTPMV ( CHARACTER*1 UPLO,
176                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
177                  INTEGER N, DOUBLE-PRECISION(*) AP, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
178 SUBROUTINE: DTRSV ( CHARACTER*1 UPLO,
179                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
180                  INTEGER N, DOUBLE-PRECISION(*) A, INTEGER LDA, DOUBLE-PRECISION(*) X,
181                  INTEGER INCX ) ;
182 SUBROUTINE: DTBSV ( CHARACTER*1 UPLO,
183                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
184                  INTEGER N, INTEGER K, DOUBLE-PRECISION(*) A, INTEGER LDA,
185                  DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
186 SUBROUTINE: DTPSV ( CHARACTER*1 UPLO,
187                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
188                  INTEGER N, DOUBLE-PRECISION(*) AP, DOUBLE-PRECISION(*) X, INTEGER INCX ) ;
189
190 SUBROUTINE: CGEMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
191                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
192                  COMPLEX(*) X, INTEGER INCX, COMPLEX BETA,
193                  COMPLEX(*) Y, INTEGER INCY ) ;
194 SUBROUTINE: CGBMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
195                  INTEGER KL, INTEGER KU, COMPLEX ALPHA,
196                  COMPLEX(*) A, INTEGER LDA, COMPLEX(*) X,
197                  INTEGER INCX, COMPLEX BETA, COMPLEX(*) Y, INTEGER INCY ) ;
198 SUBROUTINE: CTRMV ( CHARACTER*1 UPLO,
199                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
200                  INTEGER N, COMPLEX(*) A, INTEGER LDA,
201                  COMPLEX(*) X, INTEGER INCX ) ;
202 SUBROUTINE: CTBMV ( CHARACTER*1 UPLO,
203                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
204                  INTEGER N, INTEGER K, COMPLEX(*) A, INTEGER LDA,
205                  COMPLEX(*) X, INTEGER INCX ) ;
206 SUBROUTINE: CTPMV ( CHARACTER*1 UPLO,
207                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
208                  INTEGER N, COMPLEX(*) AP, COMPLEX(*) X, INTEGER INCX ) ;
209 SUBROUTINE: CTRSV ( CHARACTER*1 UPLO,
210                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
211                  INTEGER N, COMPLEX(*) A, INTEGER LDA, COMPLEX(*) X,
212                  INTEGER INCX ) ;
213 SUBROUTINE: CTBSV ( CHARACTER*1 UPLO,
214                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
215                  INTEGER N, INTEGER K, COMPLEX(*) A, INTEGER LDA,
216                  COMPLEX(*) X, INTEGER INCX ) ;
217 SUBROUTINE: CTPSV ( CHARACTER*1 UPLO,
218                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
219                  INTEGER N, COMPLEX(*) AP, COMPLEX(*) X, INTEGER INCX ) ;
220
221 SUBROUTINE: ZGEMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
222                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
223                  DOUBLE-COMPLEX(*) X, INTEGER INCX, DOUBLE-COMPLEX BETA,
224                  DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
225 SUBROUTINE: ZGBMV ( CHARACTER*1 TRANSA, INTEGER M, INTEGER N,
226                  INTEGER KL, INTEGER KU, DOUBLE-COMPLEX ALPHA,
227                  DOUBLE-COMPLEX(*) A, INTEGER LDA, DOUBLE-COMPLEX(*) X,
228                  INTEGER INCX, DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
229 SUBROUTINE: ZTRMV ( CHARACTER*1 UPLO,
230                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
231                  INTEGER N, DOUBLE-COMPLEX(*) A, INTEGER LDA,
232                  DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
233 SUBROUTINE: ZTBMV ( CHARACTER*1 UPLO,
234                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
235                  INTEGER N, INTEGER K, DOUBLE-COMPLEX(*) A, INTEGER LDA,
236                  DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
237 SUBROUTINE: ZTPMV ( CHARACTER*1 UPLO,
238                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
239                  INTEGER N, DOUBLE-COMPLEX(*) AP, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
240 SUBROUTINE: ZTRSV ( CHARACTER*1 UPLO,
241                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
242                  INTEGER N, DOUBLE-COMPLEX(*) A, INTEGER LDA, DOUBLE-COMPLEX(*) X,
243                  INTEGER INCX ) ;
244 SUBROUTINE: ZTBSV ( CHARACTER*1 UPLO,
245                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
246                  INTEGER N, INTEGER K, DOUBLE-COMPLEX(*) A, INTEGER LDA,
247                  DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
248 SUBROUTINE: ZTPSV ( CHARACTER*1 UPLO,
249                  CHARACTER*1 TRANSA, CHARACTER*1 DIAG,
250                  INTEGER N, DOUBLE-COMPLEX(*) AP, DOUBLE-COMPLEX(*) X, INTEGER INCX ) ;
251
252
253 SUBROUTINE: SSYMV ( CHARACTER*1 UPLO,
254                  INTEGER N, REAL ALPHA, REAL(*) A,
255                  INTEGER LDA, REAL(*) X, INTEGER INCX,
256                  REAL BETA, REAL(*) Y, INTEGER INCY ) ;
257 SUBROUTINE: SSBMV ( CHARACTER*1 UPLO,
258                  INTEGER N, INTEGER K, REAL ALPHA, REAL(*) A,
259                  INTEGER LDA, REAL(*) X, INTEGER INCX,
260                  REAL BETA, REAL(*) Y, INTEGER INCY ) ;
261 SUBROUTINE: SSPMV ( CHARACTER*1 UPLO,
262                  INTEGER N, REAL ALPHA, REAL(*) AP,
263                  REAL(*) X, INTEGER INCX,
264                  REAL BETA, REAL(*) Y, INTEGER INCY ) ;
265 SUBROUTINE: SGER ( INTEGER M, INTEGER N,
266                 REAL ALPHA, REAL(*) X, INTEGER INCX,
267                 REAL(*) Y, INTEGER INCY, REAL(*) A, INTEGER LDA ) ;
268 SUBROUTINE: SSYR ( CHARACTER*1 UPLO,
269                 INTEGER N, REAL ALPHA, REAL(*) X,
270                 INTEGER INCX, REAL(*) A, INTEGER LDA ) ;
271 SUBROUTINE: SSPR ( CHARACTER*1 UPLO,
272                 INTEGER N, REAL ALPHA, REAL(*) X,
273                 INTEGER INCX, REAL(*) AP ) ;
274 SUBROUTINE: SSYR2 ( CHARACTER*1 UPLO,
275                 INTEGER N, REAL ALPHA, REAL(*) X,
276                 INTEGER INCX, REAL(*) Y, INTEGER INCY, REAL(*) A,
277                 INTEGER LDA ) ;
278 SUBROUTINE: SSPR2 ( CHARACTER*1 UPLO,
279                 INTEGER N, REAL ALPHA, REAL(*) X,
280                 INTEGER INCX, REAL(*) Y, INTEGER INCY, REAL(*) A ) ;
281
282 SUBROUTINE: DSYMV ( CHARACTER*1 UPLO,
283                  INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A,
284                  INTEGER LDA, DOUBLE-PRECISION(*) X, INTEGER INCX,
285                  DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
286 SUBROUTINE: DSBMV ( CHARACTER*1 UPLO,
287                  INTEGER N, INTEGER K, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A,
288                  INTEGER LDA, DOUBLE-PRECISION(*) X, INTEGER INCX,
289                  DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
290 SUBROUTINE: DSPMV ( CHARACTER*1 UPLO,
291                  INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) AP,
292                  DOUBLE-PRECISION(*) X, INTEGER INCX,
293                  DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) Y, INTEGER INCY ) ;
294 SUBROUTINE: DGER ( INTEGER M, INTEGER N,
295                 DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X, INTEGER INCX,
296                 DOUBLE-PRECISION(*) Y, INTEGER INCY, DOUBLE-PRECISION(*) A, INTEGER LDA ) ;
297 SUBROUTINE: DSYR ( CHARACTER*1 UPLO,
298                 INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X,
299                 INTEGER INCX, DOUBLE-PRECISION(*) A, INTEGER LDA ) ;
300 SUBROUTINE: DSPR ( CHARACTER*1 UPLO,
301                 INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X,
302                 INTEGER INCX, DOUBLE-PRECISION(*) AP ) ;
303 SUBROUTINE: DSYR2 ( CHARACTER*1 UPLO,
304                 INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X,
305                 INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY, DOUBLE-PRECISION(*) A,
306                 INTEGER LDA ) ;
307 SUBROUTINE: DSPR2 ( CHARACTER*1 UPLO,
308                 INTEGER N, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) X,
309                 INTEGER INCX, DOUBLE-PRECISION(*) Y, INTEGER INCY, DOUBLE-PRECISION(*) A ) ;
310
311
312 SUBROUTINE: CHEMV ( CHARACTER*1 UPLO,
313                  INTEGER N, COMPLEX ALPHA, COMPLEX(*) A,
314                  INTEGER LDA, COMPLEX(*) X, INTEGER INCX,
315                  COMPLEX BETA, COMPLEX(*) Y, INTEGER INCY ) ;
316 SUBROUTINE: CHBMV ( CHARACTER*1 UPLO,
317                  INTEGER N, INTEGER K, COMPLEX ALPHA, COMPLEX(*) A,
318                  INTEGER LDA, COMPLEX(*) X, INTEGER INCX,
319                  COMPLEX BETA, COMPLEX(*) Y, INTEGER INCY ) ;
320 SUBROUTINE: CHPMV ( CHARACTER*1 UPLO,
321                  INTEGER N, COMPLEX ALPHA, COMPLEX(*) AP,
322                  COMPLEX(*) X, INTEGER INCX,
323                  COMPLEX BETA, COMPLEX(*) Y, INTEGER INCY ) ;
324 SUBROUTINE: CGERU ( INTEGER M, INTEGER N,
325                  COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX,
326                  COMPLEX(*) Y, INTEGER INCY, COMPLEX(*) A, INTEGER LDA ) ;
327 SUBROUTINE: CGERC ( INTEGER M, INTEGER N,
328                  COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX,
329                  COMPLEX(*) Y, INTEGER INCY, COMPLEX(*) A, INTEGER LDA ) ;
330 SUBROUTINE: CHER ( CHARACTER*1 UPLO,
331                 INTEGER N, REAL ALPHA, COMPLEX(*) X, INTEGER INCX,
332                 COMPLEX(*) A, INTEGER LDA ) ;
333 SUBROUTINE: CHPR ( CHARACTER*1 UPLO,
334                 INTEGER N, REAL ALPHA, COMPLEX(*) X,
335                 INTEGER INCX, COMPLEX(*) A ) ;
336 SUBROUTINE: CHER2 ( CHARACTER*1 UPLO, INTEGER N,
337                 COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX,
338                 COMPLEX(*) Y, INTEGER INCY, COMPLEX(*) A, INTEGER LDA ) ;
339 SUBROUTINE: CHPR2 ( CHARACTER*1 UPLO, INTEGER N,
340                 COMPLEX ALPHA, COMPLEX(*) X, INTEGER INCX,
341                 COMPLEX(*) Y, INTEGER INCY, COMPLEX(*) AP ) ;
342
343 SUBROUTINE: ZHEMV ( CHARACTER*1 UPLO,
344                  INTEGER N, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A,
345                  INTEGER LDA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
346                  DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
347 SUBROUTINE: ZHBMV ( CHARACTER*1 UPLO,
348                  INTEGER N, INTEGER K, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A,
349                  INTEGER LDA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
350                  DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
351 SUBROUTINE: ZHPMV ( CHARACTER*1 UPLO,
352                  INTEGER N, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) AP,
353                  DOUBLE-COMPLEX(*) X, INTEGER INCX,
354                  DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) Y, INTEGER INCY ) ;
355 SUBROUTINE: ZGERU ( INTEGER M, INTEGER N,
356                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
357                  DOUBLE-COMPLEX(*) Y, INTEGER INCY, DOUBLE-COMPLEX(*) A, INTEGER LDA ) ;
358 SUBROUTINE: ZGERC ( INTEGER M, INTEGER N,
359                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
360                  DOUBLE-COMPLEX(*) Y, INTEGER INCY, DOUBLE-COMPLEX(*) A, INTEGER LDA ) ;
361 SUBROUTINE: ZHER ( CHARACTER*1 UPLO,
362                 INTEGER N, REAL ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
363                 DOUBLE-COMPLEX(*) A, INTEGER LDA ) ;
364 SUBROUTINE: ZHPR ( CHARACTER*1 UPLO,
365                 INTEGER N, REAL ALPHA, DOUBLE-COMPLEX(*) X,
366                 INTEGER INCX, DOUBLE-COMPLEX(*) A ) ;
367 SUBROUTINE: ZHER2 ( CHARACTER*1 UPLO, INTEGER N,
368                 DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
369                 DOUBLE-COMPLEX(*) Y, INTEGER INCY, DOUBLE-COMPLEX(*) A, INTEGER LDA ) ;
370 SUBROUTINE: ZHPR2 ( CHARACTER*1 UPLO, INTEGER N,
371                 DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) X, INTEGER INCX,
372                 DOUBLE-COMPLEX(*) Y, INTEGER INCY, DOUBLE-COMPLEX(*) AP ) ;
373
374 ! LEVEL 3 BLAS (MATRIX-MATRIX) 
375
376 SUBROUTINE: SGEMM ( CHARACTER*1 TRANSA,
377                  CHARACTER*1 TRANSB, INTEGER M, INTEGER N,
378                  INTEGER K, REAL ALPHA, REAL(*) A,
379                  INTEGER LDA, REAL(*) B, INTEGER LDB,
380                  REAL BETA, REAL(*) C, INTEGER LDC ) ;
381 SUBROUTINE: SSYMM ( CHARACTER*1 SIDE,
382                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
383                  REAL ALPHA, REAL(*) A, INTEGER LDA,
384                  REAL(*) B, INTEGER LDB, REAL BETA,
385                  REAL(*) C, INTEGER LDC ) ;
386 SUBROUTINE: SSYRK ( CHARACTER*1 UPLO,
387                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
388                  REAL ALPHA, REAL(*) A, INTEGER LDA,
389                  REAL BETA, REAL(*) C, INTEGER LDC ) ;
390 SUBROUTINE: SSYR2K ( CHARACTER*1 UPLO,
391                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
392                   REAL ALPHA, REAL(*) A, INTEGER LDA,
393                   REAL(*) B, INTEGER LDB, REAL BETA,
394                   REAL(*) C, INTEGER LDC ) ;
395 SUBROUTINE: STRMM ( CHARACTER*1 SIDE,
396                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
397                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
398                  REAL ALPHA, REAL(*) A, INTEGER LDA,
399                  REAL(*) B, INTEGER LDB ) ;
400 SUBROUTINE: STRSM ( CHARACTER*1 SIDE,
401                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
402                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
403                  REAL ALPHA, REAL(*) A, INTEGER LDA,
404                  REAL(*) B, INTEGER LDB ) ;
405
406 SUBROUTINE: DGEMM ( CHARACTER*1 TRANSA,
407                  CHARACTER*1 TRANSB, INTEGER M, INTEGER N,
408                  INTEGER K, DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A,
409                  INTEGER LDA, DOUBLE-PRECISION(*) B, INTEGER LDB,
410                  DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) C, INTEGER LDC ) ;
411 SUBROUTINE: DSYMM ( CHARACTER*1 SIDE,
412                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
413                  DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
414                  DOUBLE-PRECISION(*) B, INTEGER LDB, DOUBLE-PRECISION BETA,
415                  DOUBLE-PRECISION(*) C, INTEGER LDC ) ;
416 SUBROUTINE: DSYRK ( CHARACTER*1 UPLO,
417                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
418                  DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
419                  DOUBLE-PRECISION BETA, DOUBLE-PRECISION(*) C, INTEGER LDC ) ;
420 SUBROUTINE: DSYR2K ( CHARACTER*1 UPLO,
421                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
422                   DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
423                   DOUBLE-PRECISION(*) B, INTEGER LDB, DOUBLE-PRECISION BETA,
424                   DOUBLE-PRECISION(*) C, INTEGER LDC ) ;
425 SUBROUTINE: DTRMM ( CHARACTER*1 SIDE,
426                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
427                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
428                  DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
429                  DOUBLE-PRECISION(*) B, INTEGER LDB ) ;
430 SUBROUTINE: DTRSM ( CHARACTER*1 SIDE,
431                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
432                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
433                  DOUBLE-PRECISION ALPHA, DOUBLE-PRECISION(*) A, INTEGER LDA,
434                  DOUBLE-PRECISION(*) B, INTEGER LDB ) ;
435
436 SUBROUTINE: CGEMM ( CHARACTER*1 TRANSA,
437                  CHARACTER*1 TRANSB, INTEGER M, INTEGER N,
438                  INTEGER K, COMPLEX ALPHA, COMPLEX(*) A,
439                  INTEGER LDA, COMPLEX(*) B, INTEGER LDB,
440                  COMPLEX BETA, COMPLEX(*) C, INTEGER LDC ) ;
441 SUBROUTINE: CSYMM ( CHARACTER*1 SIDE,
442                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
443                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
444                  COMPLEX(*) B, INTEGER LDB, COMPLEX BETA,
445                  COMPLEX(*) C, INTEGER LDC ) ;
446 SUBROUTINE: CSYRK ( CHARACTER*1 UPLO,
447                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
448                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
449                  COMPLEX BETA, COMPLEX(*) C, INTEGER LDC ) ;
450 SUBROUTINE: CSYR2K ( CHARACTER*1 UPLO,
451                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
452                   COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
453                   COMPLEX(*) B, INTEGER LDB, COMPLEX BETA,
454                   COMPLEX(*) C, INTEGER LDC ) ;
455 SUBROUTINE: CTRMM ( CHARACTER*1 SIDE,
456                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
457                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
458                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
459                  COMPLEX(*) B, INTEGER LDB ) ;
460 SUBROUTINE: CTRSM ( CHARACTER*1 SIDE,
461                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
462                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
463                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
464                  COMPLEX(*) B, INTEGER LDB ) ;
465
466 SUBROUTINE: ZGEMM ( CHARACTER*1 TRANSA,
467                  CHARACTER*1 TRANSB, INTEGER M, INTEGER N,
468                  INTEGER K, DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A,
469                  INTEGER LDA, DOUBLE-COMPLEX(*) B, INTEGER LDB,
470                  DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
471 SUBROUTINE: ZSYMM ( CHARACTER*1 SIDE,
472                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
473                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
474                  DOUBLE-COMPLEX(*) B, INTEGER LDB, DOUBLE-COMPLEX BETA,
475                  DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
476 SUBROUTINE: ZSYRK ( CHARACTER*1 UPLO,
477                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
478                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
479                  DOUBLE-COMPLEX BETA, DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
480 SUBROUTINE: ZSYR2K ( CHARACTER*1 UPLO,
481                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
482                   DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
483                   DOUBLE-COMPLEX(*) B, INTEGER LDB, DOUBLE-COMPLEX BETA,
484                   DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
485 SUBROUTINE: ZTRMM ( CHARACTER*1 SIDE,
486                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
487                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
488                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
489                  DOUBLE-COMPLEX(*) B, INTEGER LDB ) ;
490 SUBROUTINE: ZTRSM ( CHARACTER*1 SIDE,
491                  CHARACTER*1 UPLO, CHARACTER*1 TRANSA,
492                  CHARACTER*1 DIAG, INTEGER M, INTEGER N,
493                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
494                  DOUBLE-COMPLEX(*) B, INTEGER LDB ) ;
495
496 SUBROUTINE: CHEMM ( CHARACTER*1 SIDE,
497                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
498                  COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
499                  COMPLEX(*) B, INTEGER LDB, COMPLEX BETA,
500                  COMPLEX(*) C, INTEGER LDC ) ;
501 SUBROUTINE: CHERK ( CHARACTER*1 UPLO,
502                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
503                  REAL ALPHA, COMPLEX(*) A, INTEGER LDA,
504                  REAL BETA, COMPLEX(*) C, INTEGER LDC ) ;
505 SUBROUTINE: CHER2K ( CHARACTER*1 UPLO,
506                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
507                   COMPLEX ALPHA, COMPLEX(*) A, INTEGER LDA,
508                   COMPLEX(*) B, INTEGER LDB, REAL BETA,
509                   COMPLEX(*) C, INTEGER LDC ) ;
510 SUBROUTINE: ZHEMM ( CHARACTER*1 SIDE,
511                  CHARACTER*1 UPLO, INTEGER M, INTEGER N,
512                  DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
513                  DOUBLE-COMPLEX(*) B, INTEGER LDB, DOUBLE-COMPLEX BETA,
514                  DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
515 SUBROUTINE: ZHERK ( CHARACTER*1 UPLO,
516                  CHARACTER*1 TRANS, INTEGER N, INTEGER K,
517                  REAL ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
518                  REAL BETA, DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;
519 SUBROUTINE: ZHER2K ( CHARACTER*1 UPLO,
520                   CHARACTER*1 TRANS, INTEGER N, INTEGER K,
521                   DOUBLE-COMPLEX ALPHA, DOUBLE-COMPLEX(*) A, INTEGER LDA,
522                   DOUBLE-COMPLEX(*) B, INTEGER LDB, REAL BETA,
523                   DOUBLE-COMPLEX(*) C, INTEGER LDC ) ;