~ubuntu-branches/ubuntu/vivid/atlas/vivid

« back to all changes in this revision

Viewing changes to include/atlas_lapack.h

  • Committer: Package Import Robot
  • Author(s): Sébastien Villemot, Sylvestre Ledru, Sébastien Villemot
  • Date: 2013-06-11 15:58:16 UTC
  • mfrom: (1.1.4) (25 sid)
  • mto: This revision was merged to the branch mainline in revision 26.
  • Revision ID: package-import@ubuntu.com-20130611155816-8xeeiziu1iml040c
Tags: 3.10.1-1
[ Sylvestre Ledru ]
* New upstream release (Closes: #609287)

[ Sébastien Villemot ]
* Provide architectural defaults (i.e. precomputed timings) for all
  release archs (except armel and mips for the time being, due to slow
  porterboxes). This will make the package build much faster and should
  eliminate transient build failures due to excessive variance in the
  timings.
* Move symlinks for lib{cblas,f77blas,atlas,lapack_atlas} out of the
  libblas.so.3 alternative and make them always present, so that
  software relying on these libs do not break when another alternative
  is selected for BLAS
* ATLAS now has improved ARM support with native asm constructs. This required
  the following tunes:
  + armel-is-v4t.diff: new patch, prevents FTBFS on armel; otherwise,
    ATLAS uses asm constructs too recent for the platform (armel is only v4t)
  + debian/rules: on armhf, define the ATL_ARM_HARDFP flag; otherwise the asm
    constructs use the soft-float ABI for passing floating points
  + on armhf, ensure that -mfloat-abi=softfp and -mcpu=vfpv3 flags are never
    used; this is implemented via a patch (armhf.diff) and by the use of fixed
    archdefs
* The generic package is now built without multi-threading, because otherwise
  the package fails to build on some single-processor machines (this required
  the introduction of a patch: fix-non-threaded-build.diff). As a side effect,
  the build of the custom package gracefully handles non-threaded
  builds. (Closes: #602524)
* Add libblas.a as slave in the libblas.so alternative (Closes: #701921)
* Add symlinks for lib{f77blas,atlas}.a in /usr/lib (Closes: #666203)
* Modify shlibs file of libatlas3-base, such that packages using
  libblas/liblapack depend on any BLAS/LAPACK alternative, while packages
  depending on ATLAS-specific libraries (e.g. libatlas.so) depend specifically
  on libatlas3-base.
* corei1.diff: remove patch, applied upstream
* Use my @debian.org email address
* Remove obsolete DM-Upload-Allowed flag
* Switch VCS to git
* Remove Conflicts/Replaces against pre-squeeze packages
* libatlas-base-dev now provides libblas.so, as libblas-dev
* No longer use -Wa,--noexecstack in CFLAGS, it makes the package FTBFS
* Do not use POWER3 arch for powerpcspe port (Closes: #701068)
* Bump to debhelper compat level 9
* README.Debian: mention that devscripts is needed to compile the custom
  package (Closes: #697431)
* Bump Standards-Version to 3.9.4. As a consequence, add Built-Using
  fields because the package embeds stuff from liblapack-pic

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 *             Automatically Tuned Linear Algebra Software v3.8.4
 
2
 *             Automatically Tuned Linear Algebra Software v3.10.1
3
3
 *                    (C) Copyright 1999 R. Clint Whaley
4
4
 *
5
5
 * Redistribution and use in source and binary forms, with or without
32
32
 
33
33
#include "atlas_misc.h"
34
34
#include "cblas.h"
 
35
#include "atlas_ptalias_lapack.h"
 
36
 
 
37
/*
 
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
 
48
 */
 
49
enum ATL_LAMATTYPE
 
50
   {LAMATG=0, LAMATL=1, LAMATU=2, LAMATH=3, LAMATB=4, LAMATQ=5, LAMATZ=6};
 
51
/*
 
52
 * Define LAPACK flag arguments as powers of two so we can | them together
 
53
 * for calls to ILAENV
 
54
 */
 
55
enum ATL_LAFLG
 
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)};
 
58
/*
 
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
 
69
 */
 
70
enum ATL_LAROUT
 
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)
 
80
    };
 
81
 
 
82
enum ATL_ISPEC
 
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};
 
86
/*
 
87
 * Comments from lapack's ILAENV
 
88
*  ISPEC   (input) INTEGER
 
89
*          Specifies the parameter to be returned as the value of
 
90
*          ILAENV.
 
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
 
115
*          12 <= ISPEC <= 16:
 
116
*               xHSEQR or one of its subroutines,
 
117
*               see IPARMQ for detailed explanation
 
118
*/
 
119
 
 
120
enum ATL_LADIRECT
 
121
   {LAForward=1, LABackward=2 };
 
122
enum ATL_LASTOREV
 
123
   {LARowStore=1, LAColumnStore=2 };
35
124
 
36
125
#ifdef PATL
37
126
 
39
128
/*
40
129
 * predefined type macro names
41
130
 */
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)
64
189
 
65
190
#endif
66
191
 
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,
79
208
                float *B, const int ldb);
80
209
int ATL_sgetrf(const enum CBLAS_ORDER Order, const int M, const int N,
81
210
               float *A, const int lda, int *ipiv);
 
211
#ifdef ATL_USEPTHREADS
 
212
   int ATL_stgetf2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda,
 
213
                   int *ipiv);
 
214
#endif
 
215
int ATL_sgetf2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda, int *ipiv);
82
216
void ATL_sgetrs(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE Trans,
83
217
                const int N, const int NRHS, const float *A, const int lda,
84
218
                const int *ipiv, float *B, const int ldb);
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);
 
233
#endif
 
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);
 
241
int ATL_sormlq
 
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);
 
245
int ATL_sgels
 
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);
 
249
int ATL_strtrs
 
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);
 
257
#endif
 
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);
 
265
int ATL_sormql
 
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);
 
269
int ATL_sgels
 
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);
 
273
int ATL_strtrs
 
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);
 
281
#endif
 
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);
 
289
int ATL_sormrq
 
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);
 
293
int ATL_sgels
 
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);
 
297
int ATL_strtrs
 
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);
 
305
#endif
 
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);
 
313
int ATL_sormqr
 
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);
 
317
int ATL_sgels
 
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);
 
321
int ATL_strtrs
 
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,
 
331
                float *TAU);
 
332
void ATL_slarfp(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
 
333
                float *TAU);
 
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);
 
338
void ATL_slarft
 
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);
 
342
void ATL_sprintMat
 
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,
105
359
                 const int lda);
106
360
int ATL_strtriCL(const enum CBLAS_DIAG Diag, const int N, float *A,
107
361
                 const int lda);
108
 
 
109
 
int ATL_dgetri(const enum CBLAS_ORDER Order, const int N, TYPE *A, const int lda,
110
 
               const int *ipiv, TYPE *wrk, int *lwrk);
111
 
int ATL_dgetriR(const int N, TYPE *A, const int lda, const int *ipiv,
112
 
                TYPE *wrk, const int lwrk);
113
 
int ATL_dgetriC(const int N, TYPE *A, const int lda, const int *ipiv,
114
 
                TYPE *wrk, const int lwrk);
 
362
int ATL_slascl
 
363
   (const enum ATL_LAMATTYPE mtyp, ATL_CINT KL, ATL_CINT KU, const float den0,
 
364
    const float num0, ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda);
 
365
 
 
366
 
 
367
int ATL_dgetri(const enum CBLAS_ORDER Order, const int N, double *A, const int lda,
 
368
               const int *ipiv, double *wrk, int *lwrk);
 
369
int ATL_dgetriR(const int N, double *A, const int lda, const int *ipiv,
 
370
                double *wrk, const int lwrk);
 
371
int ATL_dgetriC(const int N, double *A, const int lda, const int *ipiv,
 
372
                double *wrk, const int lwrk);
115
373
void ATL_dlauum(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
116
374
                const int N, double *A, const int lda);
117
375
int ATL_dpotrf(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
121
379
                double *B, const int ldb);
122
380
int ATL_dgetrf(const enum CBLAS_ORDER Order, const int M, const int N,
123
381
               double *A, const int lda, int *ipiv);
 
382
#ifdef ATL_USEPTHREADS
 
383
   int ATL_dtgetf2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda,
 
384
                   int *ipiv);
 
385
#endif
 
386
int ATL_dgetf2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda, int *ipiv);
124
387
void ATL_dgetrs(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE Trans,
125
388
                const int N, const int NRHS, const double *A, const int lda,
126
389
                const int *ipiv, double *B, const int ldb);
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);
 
404
#endif
 
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);
 
412
int ATL_dormlq
 
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);
 
416
int ATL_dgels
 
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);
 
420
int ATL_dtrtrs
 
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);
 
428
#endif
 
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);
 
436
int ATL_dormql
 
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);
 
440
int ATL_dgels
 
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);
 
444
int ATL_dtrtrs
 
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);
 
452
#endif
 
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);
 
460
int ATL_dormrq
 
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);
 
464
int ATL_dgels
 
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);
 
468
int ATL_dtrtrs
 
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);
 
476
#endif
 
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);
 
484
int ATL_dormqr
 
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);
 
488
int ATL_dgels
 
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);
 
492
int ATL_dtrtrs
 
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,
 
502
                double *TAU);
 
503
void ATL_dlarfp(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
 
504
                double *TAU);
 
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);
 
509
void ATL_dlarft
 
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);
 
513
void ATL_dprintMat
 
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,
147
530
                 const int lda);
148
531
int ATL_dtrtriCL(const enum CBLAS_DIAG Diag, const int N, double *A,
149
532
                 const int lda);
150
 
 
151
 
int ATL_cgetri(const enum CBLAS_ORDER Order, const int N, TYPE *A, const int lda,
152
 
               const int *ipiv, TYPE *wrk, int *lwrk);
153
 
int ATL_cgetriR(const int N, TYPE *A, const int lda, const int *ipiv,
154
 
                TYPE *wrk, const int lwrk);
155
 
int ATL_cgetriC(const int N, TYPE *A, const int lda, const int *ipiv,
156
 
                TYPE *wrk, const int lwrk);
 
533
int ATL_dlascl
 
534
   (const enum ATL_LAMATTYPE mtyp, ATL_CINT KL, ATL_CINT KU, const double den0,
 
535
    const double num0, ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda);
 
536
 
 
537
 
 
538
int ATL_cgetri(const enum CBLAS_ORDER Order, const int N, float *A, const int lda,
 
539
               const int *ipiv, float *wrk, int *lwrk);
 
540
int ATL_cgetriR(const int N, float *A, const int lda, const int *ipiv,
 
541
                float *wrk, const int lwrk);
 
542
int ATL_cgetriC(const int N, float *A, const int lda, const int *ipiv,
 
543
                float *wrk, const int lwrk);
157
544
void ATL_clauum(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
158
545
                const int N, float *A, const int lda);
159
546
int ATL_cpotrf(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
163
550
                float *B, const int ldb);
164
551
int ATL_cgetrf(const enum CBLAS_ORDER Order, const int M, const int N,
165
552
               float *A, const int lda, int *ipiv);
 
553
#ifdef ATL_USEPTHREADS
 
554
   int ATL_ctgetf2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda,
 
555
                   int *ipiv);
 
556
#endif
 
557
int ATL_cgetf2(ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda, int *ipiv);
166
558
void ATL_cgetrs(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE Trans,
167
559
                const int N, const int NRHS, const float *A, const int lda,
168
560
                const int *ipiv, float *B, const int ldb);
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);
 
575
#endif
 
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);
 
583
int ATL_cormlq
 
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);
 
587
int ATL_cgels
 
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);
 
591
int ATL_ctrtrs
 
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);
 
599
#endif
 
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);
 
607
int ATL_cormql
 
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);
 
611
int ATL_cgels
 
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);
 
615
int ATL_ctrtrs
 
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);
 
623
#endif
 
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);
 
631
int ATL_cormrq
 
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);
 
635
int ATL_cgels
 
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);
 
639
int ATL_ctrtrs
 
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);
 
647
#endif
 
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);
 
655
int ATL_cormqr
 
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);
 
659
int ATL_cgels
 
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);
 
663
int ATL_ctrtrs
 
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,
 
673
                float *TAU);
 
674
void ATL_clarfp(ATL_CINT N, float *ALPHA, float *X, ATL_CINT INCX,
 
675
                float *TAU);
 
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);
 
680
void ATL_clarft
 
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);
 
684
void ATL_cprintMat
 
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,
191
705
                 const int lda);
192
706
int ATL_ctrtriCL(const enum CBLAS_DIAG Diag, const int N, float *A,
193
707
                 const int lda);
194
 
 
195
 
int ATL_zgetri(const enum CBLAS_ORDER Order, const int N, TYPE *A, const int lda,
196
 
               const int *ipiv, TYPE *wrk, int *lwrk);
197
 
int ATL_zgetriR(const int N, TYPE *A, const int lda, const int *ipiv,
198
 
                TYPE *wrk, const int lwrk);
199
 
int ATL_zgetriC(const int N, TYPE *A, const int lda, const int *ipiv,
200
 
                TYPE *wrk, const int lwrk);
 
708
int ATL_clascl
 
709
   (const enum ATL_LAMATTYPE mtyp, ATL_CINT KL, ATL_CINT KU, const float den0,
 
710
    const float num0, ATL_CINT M, ATL_CINT N, float *A, ATL_CINT lda);
 
711
 
 
712
 
 
713
int ATL_zgetri(const enum CBLAS_ORDER Order, const int N, double *A, const int lda,
 
714
               const int *ipiv, double *wrk, int *lwrk);
 
715
int ATL_zgetriR(const int N, double *A, const int lda, const int *ipiv,
 
716
                double *wrk, const int lwrk);
 
717
int ATL_zgetriC(const int N, double *A, const int lda, const int *ipiv,
 
718
                double *wrk, const int lwrk);
201
719
void ATL_zlauum(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
202
720
                const int N, double *A, const int lda);
203
721
int ATL_zpotrf(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
207
725
                double *B, const int ldb);
208
726
int ATL_zgetrf(const enum CBLAS_ORDER Order, const int M, const int N,
209
727
               double *A, const int lda, int *ipiv);
 
728
#ifdef ATL_USEPTHREADS
 
729
   int ATL_ztgetf2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda,
 
730
                   int *ipiv);
 
731
#endif
 
732
int ATL_zgetf2(ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda, int *ipiv);
210
733
void ATL_zgetrs(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE Trans,
211
734
                const int N, const int NRHS, const double *A, const int lda,
212
735
                const int *ipiv, double *B, const int ldb);
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);
 
750
#endif
 
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);
 
758
int ATL_zormlq
 
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);
 
762
int ATL_zgels
 
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);
 
766
int ATL_ztrtrs
 
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);
 
774
#endif
 
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);
 
782
int ATL_zormql
 
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);
 
786
int ATL_zgels
 
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);
 
790
int ATL_ztrtrs
 
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);
 
798
#endif
 
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);
 
806
int ATL_zormrq
 
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);
 
810
int ATL_zgels
 
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);
 
814
int ATL_ztrtrs
 
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);
 
822
#endif
 
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);
 
830
int ATL_zormqr
 
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);
 
834
int ATL_zgels
 
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);
 
838
int ATL_ztrtrs
 
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,
 
848
                double *TAU);
 
849
void ATL_zlarfp(ATL_CINT N, double *ALPHA, double *X, ATL_CINT INCX,
 
850
                double *TAU);
 
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);
 
855
void ATL_zlarft
 
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);
 
859
void ATL_zprintMat
 
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,
235
880
                 const int lda);
236
881
int ATL_ztrtriCL(const enum CBLAS_DIAG Diag, const int N, double *A,
237
882
                 const int lda);
 
883
int ATL_zlascl
 
884
   (const enum ATL_LAMATTYPE mtyp, ATL_CINT KL, ATL_CINT KU, const double den0,
 
885
    const double num0, ATL_CINT M, ATL_CINT N, double *A, ATL_CINT lda);
 
886
 
238
887
 
239
888
#endif