33
33
#include "atlas_misc.h"
35
#include "atlas_ptalias_lapack.h"
38
* Enumerated type for LAPACK's matrix types:
39
* G : general rectangular matrix
40
* L : Lower triangular
41
* U : Upper triangular
42
* H : Upper hessenburg
43
* B : symmetric band matrix wt lower bandwidth KL & upper BW KU
44
* and wt only the lower half stored
45
* Q : symmetric band matrix wt lower bandwidth KL & upper BW KU
46
* and wt only the upper half stored
47
* Z : band matrix wt lower bandwidth KL & upper BW KU
50
{LAMATG=0, LAMATL=1, LAMATU=2, LAMATH=3, LAMATB=4, LAMATQ=5, LAMATZ=6};
52
* Define LAPACK flag arguments as powers of two so we can | them together
56
{LAUpper=1, LALower=2, LARight=4, LALeft=8, LAUnit=16, LANonunit=32,
57
LASreal=(1<<27), LADreal=(1<<28), LAScplx=(1<<29), LADcplx=(1<<30)};
59
* We can overload QR names to one by filling in LAFLG, giving Side for
60
* the trapezoidal matrix, and type of triangle:
61
* LAormqr + LARight+LAUpper --> ORMQR
62
* LAormqr + LARight+LALower --> ORMQL
63
* LAormqr + LALeft +LAUpper --> ORMRQ
64
* LAormqr + LALeft +LALower --> ORMLQ
65
* LAgeqrf + LARight+LAUpper --> GEQRF
66
* LAgeqrf + LARight+LALower --> GEQLF
67
* LAgeqrf + LALeft +LAUpper --> GERQF
68
* LAgeqrf + LALeft +LALower --> GELQF
71
{LAunknown=0, LAgetrf=1, LAgeqrf=(1<<1), /* handles ge[qr,rq,lq,ql]f */
72
LAormqr=(1<<2), /* handles all [[d,s]orm,[c,z]unm][qr,ql,rq,lq] */
73
LArorgen=(1<<3), /* general [D,S]OR* routine needing constrained NB */
74
LAcungen=(1<<4), /* general [Z,C]UN* routine needing constrained NB */
75
LAgehrd=(1<<5), LAgebrd=(1<<6), LAgetri=(1<<7),
76
LApotrf=(1<<8), LAsytrf=(1<<9), LAsytrd=(1<<10), LAhetrf=(1<<11),
77
LAhetrd=(1<<12), LAhegst=(1<<13), LAhbgst=(1<<14), LAhpgst=(1<<15),
78
LAspgst=(1<<16), LAsbgst=(1<<17), LAsygst=(1<<18), LAstebz=(1<<19),
79
LAgbtrf=(1<<20), LApbtrf=(1<21), LAtrtri=(1<<22), LAlauum=(1<<23)
83
{LAIS_OPT_NB=1, LAIS_MIN_NB=2, LAIS_NBXOVER=3, LAIS_NEIGSHFT=4,
84
LAIS_MINCSZ=5, LAIS_SVDXOVER=6, LAIS_NPROC=7, LAIS_MSQRXOVER=8,
85
LAIS_MAXDCSPSZ=9, LAIS_NTNAN=10, LAIS_NTINF=11};
87
* Comments from lapack's ILAENV
88
* ISPEC (input) INTEGER
89
* Specifies the parameter to be returned as the value of
91
* = 1: the optimal blocksize; if this value is 1, an unblocked
92
* algorithm will give the best performance.
93
* = 2: the minimum block size for which the block routine
94
* should be used; if the usable block size is less than
95
* this value, an unblocked routine should be used.
96
* = 3: the crossover point (in a block routine, for N less
97
* than this value, an unblocked routine should be used)
98
* = 4: the number of shifts, used in the nonsymmetric
99
* eigenvalue routines (DEPRECATED)
100
* = 5: the minimum column dimension for blocking to be used;
101
* rectangular blocks must have dimension at least k by m,
102
* where k is given by ILAENV(2,...) and m by ILAENV(5,...)
103
* = 6: the crossover point for the SVD (when reducing an m by n
104
* matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
105
* this value, a QR factorization is used first to reduce
106
* the matrix to a triangular form.)
107
* = 7: the number of processors
108
* = 8: the crossover point for the multishift QR method
109
* for nonsymmetric eigenvalue problems (DEPRECATED)
110
* = 9: maximum size of the subproblems at the bottom of the
111
* computation tree in the divide-and-conquer algorithm
112
* (used by xGELSD and xGESDD)
113
* =10: ieee NaN arithmetic can be trusted not to trap
114
* =11: infinity arithmetic can be trusted not to trap
116
* xHSEQR or one of its subroutines,
117
* see IPARMQ for detailed explanation
121
{LAForward=1, LABackward=2 };
123
{LARowStore=1, LAColumnStore=2 };
40
129
* predefined type macro names
42
#define ATL_getriR Mjoin(PATL,getriR)
43
#define ATL_getriC Mjoin(PATL,getriC)
44
#define ATL_getri Mjoin(PATL,getri)
45
#define ATL_lauumRL Mjoin(PATL,lauumRL)
46
#define ATL_lauumRU Mjoin(PATL,lauumRU)
47
#define ATL_lauumCL Mjoin(PATL,lauumCL)
48
#define ATL_lauumCU Mjoin(PATL,lauumCU)
49
#define ATL_lauum Mjoin(PATL,lauum)
50
#define ATL_trtriRL Mjoin(PATL,trtriRL)
51
#define ATL_trtriRU Mjoin(PATL,trtriRU)
52
#define ATL_trtriCL Mjoin(PATL,trtriCL)
53
#define ATL_trtriCU Mjoin(PATL,trtriCU)
54
#define ATL_trtri Mjoin(PATL,trtri)
55
#define ATL_potrfU Mjoin(PATL,potrfU)
56
#define ATL_potrfL Mjoin(PATL,potrfL)
57
#define ATL_potrs Mjoin(PATL,potrs)
58
#define ATL_potrf Mjoin(PATL,potrf)
59
#define ATL_getrfR Mjoin(PATL,getrfR)
60
#define ATL_getrfC Mjoin(PATL,getrfC)
61
#define ATL_getrs Mjoin(PATL,getrs)
62
#define ATL_getrf Mjoin(PATL,getrf)
63
#define ATL_laswp Mjoin(PATL,laswp)
131
#define ATL_trtrs Mjoin(PATL,trtrs)
132
#define ATL_gels Mjoin(PATL,gels)
133
#define ATL_printMat Mjoin(PATL,printMat)
134
#define ATL_larfp Mjoin(PATL,larfp)
135
#define ATL_lacgv Mjoin(PATL,lacgv)
136
#define ATL_lapy3 Mjoin(PATL,lapy3)
137
#define ATL_lapy2 Mjoin(PATL,lapy2)
138
#define ATL_larft_block Mjoin(PATL,larft_block)
139
#define ATL_ladiv Mjoin(PATL,ladiv)
140
#define ATL_larft Mjoin(PATL,larft)
141
#define ATL_larfg Mjoin(PATL,larfg)
142
#define ATL_larf Mjoin(PATL,larf)
143
#define ATL_larfb Mjoin(PATL,larfb)
144
#define ATL_ormlq Mjoin(PATL,ormlq)
145
#define ATL_ormql Mjoin(PATL,ormql)
146
#define ATL_ormrq Mjoin(PATL,ormrq)
147
#define ATL_ormqr Mjoin(PATL,ormqr)
148
#define ATL_gelqr Mjoin(PATL,gelqr)
149
#define ATL_gelqf Mjoin(PATL,gelqf)
150
#define ATL_gelq2 Mjoin(PATL,gelq2)
151
#define ATL_geqlr Mjoin(PATL,geqlr)
152
#define ATL_geqlf Mjoin(PATL,geqlf)
153
#define ATL_geql2 Mjoin(PATL,geql2)
154
#define ATL_gerqr Mjoin(PATL,gerqr)
155
#define ATL_gerqf Mjoin(PATL,gerqf)
156
#define ATL_gerq2 Mjoin(PATL,gerq2)
157
#define ATL_geqrr Mjoin(PATL,geqrr)
158
#define ATL_geqrf Mjoin(PATL,geqrf)
159
#define ATL_geqr2 Mjoin(PATL,geqr2)
160
#define ATL_tgetf2 Mjoin(PATL,tgetf2)
161
#define ATL_tgelq2 Mjoin(PATL,tgelq2)
162
#define ATL_tgeql2 Mjoin(PATL,tgeql2)
163
#define ATL_tgerq2 Mjoin(PATL,tgerq2)
164
#define ATL_tgeqr2 Mjoin(PATL,tgeqr2)
165
#define ATL_getriR Mjoin(PATL,getriR)
166
#define ATL_getriC Mjoin(PATL,getriC)
167
#define ATL_getri Mjoin(PATL,getri)
168
#define ATL_lauumRL Mjoin(PATL,lauumRL)
169
#define ATL_lauumRU Mjoin(PATL,lauumRU)
170
#define ATL_lauumCL Mjoin(PATL,lauumCL)
171
#define ATL_lauumCU Mjoin(PATL,lauumCU)
172
#define ATL_lauum Mjoin(PATL,lauum)
173
#define ATL_trtriRL Mjoin(PATL,trtriRL)
174
#define ATL_trtriRU Mjoin(PATL,trtriRU)
175
#define ATL_trtriCL Mjoin(PATL,trtriCL)
176
#define ATL_trtriCU Mjoin(PATL,trtriCU)
177
#define ATL_trtri Mjoin(PATL,trtri)
178
#define ATL_potrfU Mjoin(PATL,potrfU)
179
#define ATL_potrfL Mjoin(PATL,potrfL)
180
#define ATL_potrs Mjoin(PATL,potrs)
181
#define ATL_potrf Mjoin(PATL,potrf)
182
#define ATL_getf2 Mjoin(PATL,getf2)
183
#define ATL_getrfR Mjoin(PATL,getrfR)
184
#define ATL_getrfC Mjoin(PATL,getrfC)
185
#define ATL_getrs Mjoin(PATL,getrs)
186
#define ATL_getrf Mjoin(PATL,getrf)
187
#define ATL_laswp Mjoin(PATL,laswp)
188
#define ATL_lamch Mjoin(Mjoin(ATL_,UPR),lamch)
67
int ATL_sgetri(const enum CBLAS_ORDER Order, const int N, TYPE *A, const int lda,
68
const int *ipiv, TYPE *wrk, int *lwrk);
69
int ATL_sgetriR(const int N, TYPE *A, const int lda, const int *ipiv,
70
TYPE *wrk, const int lwrk);
71
int ATL_sgetriC(const int N, TYPE *A, const int lda, const int *ipiv,
72
TYPE *wrk, const int lwrk);
192
int clapack_ilaenv(enum ATL_ISPEC ISPEC, enum ATL_LAROUT ROUT,
193
unsigned int OPTS, int N1, int N2, int N3, int N4);
194
int ATL_ilaenv(enum ATL_ISPEC ISPEC, enum ATL_LAROUT ROUT, unsigned int OPTS,
195
int N1, int N2, int N3, int N4);
196
int ATL_sgetri(const enum CBLAS_ORDER Order, const int N, float *A, const int lda,
197
const int *ipiv, float *wrk, int *lwrk);
198
int ATL_sgetriR(const int N, float *A, const int lda, const int *ipiv,
199
float *wrk, const int lwrk);
200
int ATL_sgetriC(const int N, float *A, const int lda, const int *ipiv,
201
float *wrk, const int lwrk);
73
202
void ATL_slauum(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
74
203
const int N, float *A, const int lda);
75
204
int ATL_spotrf(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
92
226
void ATL_slauumRL(const int N, float *A, const int lda);
93
227
void ATL_slauumCU(const int N, float *A, const int lda);
94
228
void ATL_slauumCL(const int N, float *A, const int lda);
229
#ifdef ATL_USEPTHREADS
230
int ATL_stgelq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
231
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
232
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
234
int ATL_sgelq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
235
float *TAU, float *WORK);
236
int ATL_sgelqf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
237
float *TAU, float *WORK, ATL_CINT LWORK);
238
int ATL_sgelqr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
239
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
240
float *WORKM, const int buildT);
242
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
243
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
244
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
246
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
247
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
248
float *work, ATL_CINT lwork);
250
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
251
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
252
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
253
#ifdef ATL_USEPTHREADS
254
int ATL_stgeql2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
255
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
256
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
258
int ATL_sgeql2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
259
float *TAU, float *WORK);
260
int ATL_sgeqlf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
261
float *TAU, float *WORK, ATL_CINT LWORK);
262
int ATL_sgeqlr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
263
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
264
float *WORKM, const int buildT);
266
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
267
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
268
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
270
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
271
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
272
float *work, ATL_CINT lwork);
274
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
275
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
276
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
277
#ifdef ATL_USEPTHREADS
278
int ATL_stgerq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
279
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
280
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
282
int ATL_sgerq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
283
float *TAU, float *WORK);
284
int ATL_sgerqf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
285
float *TAU, float *WORK, ATL_CINT LWORK);
286
int ATL_sgerqr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
287
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
288
float *WORKM, const int buildT);
290
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
291
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
292
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
294
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
295
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
296
float *work, ATL_CINT lwork);
298
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
299
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
300
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
301
#ifdef ATL_USEPTHREADS
302
int ATL_stgeqr2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
303
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
304
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
306
int ATL_sgeqr2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
307
float *TAU, float *WORK);
308
int ATL_sgeqrf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
309
float *TAU, float *WORK, ATL_CINT LWORK);
310
int ATL_sgeqrr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
311
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
312
float *WORKM, const int buildT);
314
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
315
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
316
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
318
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
319
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
320
float *work, ATL_CINT lwork);
322
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
323
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
324
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
325
void ATL_slarfb(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
326
const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
327
ATL_CINT M, ATL_CINT N, ATL_CINT K, const float *V,
328
ATL_CINT LDV, const float *T, ATL_CINT LDT, float *C,
329
ATL_CINT LDC, float *WORK, int LDWORK);
330
void ATL_slarfg(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
332
void ATL_slarfp(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
334
void ATL_slarft_block
335
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
336
ATL_CINT N, ATL_CINT K, ATL_CINT left, ATL_CINT right, float *V,
337
ATL_CINT LDV, float *T, ATL_CINT LDT);
339
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
340
ATL_CINT N, ATL_CINT K, float *V, ATL_CINT LDV, const float *TAU,
341
float *T, ATL_CINT LDT);
343
(char *mat, const int M, const int N, float *A, const int lda0);
344
float ATL_slapy2(float X, float Y);
345
void ATL_slarf(const enum CBLAS_SIDE SIDE, ATL_CINT M, ATL_CINT N,
346
const float *V, ATL_CINT INCV, const float TAU, float *C,
347
ATL_CINT LDC, float *WORK);
348
float ATL_slamch(char);
95
349
int ATL_spotrfU(const int N, float *A, const int lda);
96
350
int ATL_spotrfL(const int N, float *A, const int lda);
97
351
int ATL_strtri(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
134
397
void ATL_dlauumRL(const int N, double *A, const int lda);
135
398
void ATL_dlauumCU(const int N, double *A, const int lda);
136
399
void ATL_dlauumCL(const int N, double *A, const int lda);
400
#ifdef ATL_USEPTHREADS
401
int ATL_dtgelq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
402
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
403
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
405
int ATL_dgelq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
406
double *TAU, double *WORK);
407
int ATL_dgelqf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
408
double *TAU, double *WORK, ATL_CINT LWORK);
409
int ATL_dgelqr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
410
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
411
double *WORKM, const int buildT);
413
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
414
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
415
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
417
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
418
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
419
double *work, ATL_CINT lwork);
421
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
422
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
423
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
424
#ifdef ATL_USEPTHREADS
425
int ATL_dtgeql2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
426
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
427
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
429
int ATL_dgeql2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
430
double *TAU, double *WORK);
431
int ATL_dgeqlf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
432
double *TAU, double *WORK, ATL_CINT LWORK);
433
int ATL_dgeqlr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
434
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
435
double *WORKM, const int buildT);
437
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
438
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
439
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
441
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
442
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
443
double *work, ATL_CINT lwork);
445
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
446
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
447
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
448
#ifdef ATL_USEPTHREADS
449
int ATL_dtgerq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
450
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
451
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
453
int ATL_dgerq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
454
double *TAU, double *WORK);
455
int ATL_dgerqf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
456
double *TAU, double *WORK, ATL_CINT LWORK);
457
int ATL_dgerqr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
458
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
459
double *WORKM, const int buildT);
461
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
462
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
463
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
465
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
466
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
467
double *work, ATL_CINT lwork);
469
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
470
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
471
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
472
#ifdef ATL_USEPTHREADS
473
int ATL_dtgeqr2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
474
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
475
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
477
int ATL_dgeqr2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
478
double *TAU, double *WORK);
479
int ATL_dgeqrf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
480
double *TAU, double *WORK, ATL_CINT LWORK);
481
int ATL_dgeqrr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
482
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
483
double *WORKM, const int buildT);
485
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
486
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
487
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
489
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
490
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
491
double *work, ATL_CINT lwork);
493
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
494
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
495
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
496
void ATL_dlarfb(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
497
const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
498
ATL_CINT M, ATL_CINT N, ATL_CINT K, const double *V,
499
ATL_CINT LDV, const double *T, ATL_CINT LDT, double *C,
500
ATL_CINT LDC, double *WORK, int LDWORK);
501
void ATL_dlarfg(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
503
void ATL_dlarfp(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
505
void ATL_dlarft_block
506
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
507
ATL_CINT N, ATL_CINT K, ATL_CINT left, ATL_CINT right, double *V,
508
ATL_CINT LDV, double *T, ATL_CINT LDT);
510
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
511
ATL_CINT N, ATL_CINT K, double *V, ATL_CINT LDV, const double *TAU,
512
double *T, ATL_CINT LDT);
514
(char *mat, const int M, const int N, double *A, const int lda0);
515
double ATL_dlapy2(double X, double Y);
516
void ATL_dlarf(const enum CBLAS_SIDE SIDE, ATL_CINT M, ATL_CINT N,
517
const double *V, ATL_CINT INCV, const double TAU, double *C,
518
ATL_CINT LDC, double *WORK);
519
double ATL_dlamch(char);
137
520
int ATL_dpotrfU(const int N, double *A, const int lda);
138
521
int ATL_dpotrfL(const int N, double *A, const int lda);
139
522
int ATL_dtrtri(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
176
568
void ATL_clauumRL(const int N, float *A, const int lda);
177
569
void ATL_clauumCU(const int N, float *A, const int lda);
178
570
void ATL_clauumCL(const int N, float *A, const int lda);
571
#ifdef ATL_USEPTHREADS
572
int ATL_ctgelq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
573
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
574
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
576
int ATL_cgelq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
577
float *TAU, float *WORK);
578
int ATL_cgelqf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
579
float *TAU, float *WORK, ATL_CINT LWORK);
580
int ATL_cgelqr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
581
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
582
float *WORKM, const int buildT);
584
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
585
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
586
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
588
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
589
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
590
float *work, ATL_CINT lwork);
592
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
593
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
594
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
595
#ifdef ATL_USEPTHREADS
596
int ATL_ctgeql2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
597
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
598
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
600
int ATL_cgeql2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
601
float *TAU, float *WORK);
602
int ATL_cgeqlf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
603
float *TAU, float *WORK, ATL_CINT LWORK);
604
int ATL_cgeqlr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
605
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
606
float *WORKM, const int buildT);
608
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
609
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
610
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
612
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
613
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
614
float *work, ATL_CINT lwork);
616
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
617
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
618
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
619
#ifdef ATL_USEPTHREADS
620
int ATL_ctgerq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
621
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
622
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
624
int ATL_cgerq2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
625
float *TAU, float *WORK);
626
int ATL_cgerqf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
627
float *TAU, float *WORK, ATL_CINT LWORK);
628
int ATL_cgerqr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
629
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
630
float *WORKM, const int buildT);
632
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
633
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
634
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
636
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
637
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
638
float *work, ATL_CINT lwork);
640
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
641
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
642
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
643
#ifdef ATL_USEPTHREADS
644
int ATL_ctgeqr2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
645
float *TAU, float *WORK, float *ws_T, ATL_INT LDT,
646
float *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
648
int ATL_cgeqr2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
649
float *TAU, float *WORK);
650
int ATL_cgeqrf(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
651
float *TAU, float *WORK, ATL_CINT LWORK);
652
int ATL_cgeqrr(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT LDA,
653
float *TAU, float *ws_QR2, float *ws_T, ATL_CINT LDT,
654
float *WORKM, const int buildT);
656
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
657
ATL_CINT M, ATL_CINT N, ATL_CINT K, float *A, ATL_CINT LDA,
658
const float *TAU, float *C, ATL_CINT LDC, float *WORK, ATL_CINT LWORK);
660
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
661
float *A, ATL_CINT lda, float *B, ATL_CINT ldb,
662
float *work, ATL_CINT lwork);
664
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
665
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
666
const float *A, ATL_CINT lda, float *B, ATL_CINT ldb);
667
void ATL_clarfb(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
668
const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
669
ATL_CINT M, ATL_CINT N, ATL_CINT K, const float *V,
670
ATL_CINT LDV, const float *T, ATL_CINT LDT, float *C,
671
ATL_CINT LDC, float *WORK, int LDWORK);
672
void ATL_clarfg(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
674
void ATL_clarfp(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
676
void ATL_clarft_block
677
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
678
ATL_CINT N, ATL_CINT K, ATL_CINT left, ATL_CINT right, float *V,
679
ATL_CINT LDV, float *T, ATL_CINT LDT);
681
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
682
ATL_CINT N, ATL_CINT K, float *V, ATL_CINT LDV, const float *TAU,
683
float *T, ATL_CINT LDT);
685
(char *mat, const int M, const int N, float *A, const int lda0);
686
float ATL_clapy2(float X, float Y);
179
687
int ATL_cpotrfRU(const int N, float *A, const int lda);
180
688
int ATL_cpotrfRL(const int N, float *A, const int lda);
689
void ATL_cladiv(const float *X, const float *Y, float *Z);
690
void ATL_clacgv(ATL_CINT N, float *X, ATL_CINT INCX);
691
float ATL_clapy3(const float X, const float Y, const float Z);
692
void ATL_clarf(const enum CBLAS_SIDE SIDE, ATL_CINT M, ATL_CINT N,
693
const float *V, ATL_CINT INCV, const float *TAU,
694
float *C, ATL_CINT LDC, float *WORK);
181
695
int ATL_cpotrfU(const int N, float *A, const int lda);
182
696
int ATL_cpotrfL(const int N, float *A, const int lda);
183
697
int ATL_ctrtri(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
220
743
void ATL_zlauumRL(const int N, double *A, const int lda);
221
744
void ATL_zlauumCU(const int N, double *A, const int lda);
222
745
void ATL_zlauumCL(const int N, double *A, const int lda);
746
#ifdef ATL_USEPTHREADS
747
int ATL_ztgelq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
748
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
749
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
751
int ATL_zgelq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
752
double *TAU, double *WORK);
753
int ATL_zgelqf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
754
double *TAU, double *WORK, ATL_CINT LWORK);
755
int ATL_zgelqr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
756
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
757
double *WORKM, const int buildT);
759
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
760
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
761
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
763
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
764
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
765
double *work, ATL_CINT lwork);
767
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
768
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
769
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
770
#ifdef ATL_USEPTHREADS
771
int ATL_ztgeql2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
772
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
773
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
775
int ATL_zgeql2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
776
double *TAU, double *WORK);
777
int ATL_zgeqlf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
778
double *TAU, double *WORK, ATL_CINT LWORK);
779
int ATL_zgeqlr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
780
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
781
double *WORKM, const int buildT);
783
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
784
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
785
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
787
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
788
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
789
double *work, ATL_CINT lwork);
791
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
792
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
793
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
794
#ifdef ATL_USEPTHREADS
795
int ATL_ztgerq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
796
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
797
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
799
int ATL_zgerq2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
800
double *TAU, double *WORK);
801
int ATL_zgerqf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
802
double *TAU, double *WORK, ATL_CINT LWORK);
803
int ATL_zgerqr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
804
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
805
double *WORKM, const int buildT);
807
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
808
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
809
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
811
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
812
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
813
double *work, ATL_CINT lwork);
815
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
816
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
817
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
818
#ifdef ATL_USEPTHREADS
819
int ATL_ztgeqr2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
820
double *TAU, double *WORK, double *ws_T, ATL_INT LDT,
821
double *WORKM, ATL_CINT buildT, ATL_CINT myCopy);
823
int ATL_zgeqr2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
824
double *TAU, double *WORK);
825
int ATL_zgeqrf(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
826
double *TAU, double *WORK, ATL_CINT LWORK);
827
int ATL_zgeqrr(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT LDA,
828
double *TAU, double *ws_QR2, double *ws_T, ATL_CINT LDT,
829
double *WORKM, const int buildT);
831
(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
832
ATL_CINT M, ATL_CINT N, ATL_CINT K, double *A, ATL_CINT LDA,
833
const double *TAU, double *C, ATL_CINT LDC, double *WORK, ATL_CINT LWORK);
835
(const enum ATLAS_TRANS TA, ATL_CINT M, ATL_CINT N, ATL_CINT NRHS,
836
double *A, ATL_CINT lda, double *B, ATL_CINT ldb,
837
double *work, ATL_CINT lwork);
839
(const enum ATLAS_UPLO Uplo, const enum ATLAS_TRANS TA,
840
const enum ATLAS_DIAG Diag, ATL_CINT N, ATL_CINT NRHS,
841
const double *A, ATL_CINT lda, double *B, ATL_CINT ldb);
842
void ATL_zlarfb(const enum CBLAS_SIDE SIDE, const enum CBLAS_TRANSPOSE TRANS,
843
const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
844
ATL_CINT M, ATL_CINT N, ATL_CINT K, const double *V,
845
ATL_CINT LDV, const double *T, ATL_CINT LDT, double *C,
846
ATL_CINT LDC, double *WORK, int LDWORK);
847
void ATL_zlarfg(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
849
void ATL_zlarfp(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
851
void ATL_zlarft_block
852
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
853
ATL_CINT N, ATL_CINT K, ATL_CINT left, ATL_CINT right, double *V,
854
ATL_CINT LDV, double *T, ATL_CINT LDT);
856
(const enum ATL_LADIRECT DIRECT, const enum ATL_LASTOREV STOREV,
857
ATL_CINT N, ATL_CINT K, double *V, ATL_CINT LDV, const double *TAU,
858
double *T, ATL_CINT LDT);
860
(char *mat, const int M, const int N, double *A, const int lda0);
861
double ATL_zlapy2(double X, double Y);
223
862
int ATL_zpotrfRU(const int N, double *A, const int lda);
224
863
int ATL_zpotrfRL(const int N, double *A, const int lda);
864
void ATL_zladiv(const double *X, const double *Y, double *Z);
865
void ATL_zlacgv(ATL_CINT N, double *X, ATL_CINT INCX);
866
double ATL_zlapy3(const double X, const double Y, const double Z);
867
void ATL_zlarf(const enum CBLAS_SIDE SIDE, ATL_CINT M, ATL_CINT N,
868
const double *V, ATL_CINT INCV, const double *TAU,
869
double *C, ATL_CINT LDC, double *WORK);
225
870
int ATL_zpotrfU(const int N, double *A, const int lda);
226
871
int ATL_zpotrfL(const int N, double *A, const int lda);
227
872
int ATL_ztrtri(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,