MAGMA  1.2.0
MatrixAlgebraonGPUandMulticoreArchitectures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
magma_zlapack.h
Go to the documentation of this file.
1 /*
2  * -- MAGMA (version 1.2.0) --
3  * Univ. of Tennessee, Knoxville
4  * Univ. of California, Berkeley
5  * Univ. of Colorado, Denver
6  * May 2012
7  *
8  * @precisions normal z -> s d c
9  */
10 
11 #ifndef MAGMA_ZLAPACK_H
12 #define MAGMA_ZLAPACK_H
13 
14 #define PRECISION_z
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 /* ////////////////////////////////////////////////////////////////////////////
20  -- LAPACK Externs used in MAGMA
21 */
22 
23 #define blasf77_zaxpy FORTRAN_NAME( zaxpy, ZAXPY )
24 #define blasf77_zcopy FORTRAN_NAME( zcopy, ZCOPY )
25 
26 /* complex versions use C wrapper to return value; no name mangling. */
27 #if defined(PRECISION_z) || defined(PRECISION_c)
28 #define blasf77_zdotc zdotc
29 #else
30 #define blasf77_zdotc FORTRAN_NAME( zdotc, ZDOTC )
31 #endif
32 
33 #define blasf77_zgemm FORTRAN_NAME( zgemm, ZGEMM )
34 #define blasf77_zgemv FORTRAN_NAME( zgemv, ZGEMV )
35 #define blasf77_zhemm FORTRAN_NAME( zhemm, ZHEMM )
36 #define blasf77_zhemv FORTRAN_NAME( zhemv, ZHEMV )
37 #define blasf77_zher2k FORTRAN_NAME( zher2k, ZHER2K )
38 #define blasf77_zher2 FORTRAN_NAME( zher2, ZHER2 )
39 #define blasf77_zherk FORTRAN_NAME( zherk, ZHERK )
40 #define blasf77_zscal FORTRAN_NAME( zscal, ZSCAL )
41 #define blasf77_zdscal FORTRAN_NAME( zdscal, ZDSCAL )
42 #define blasf77_zsymm FORTRAN_NAME( zsymm, ZSYMM )
43 #define blasf77_zsyr2k FORTRAN_NAME( zsyr2k, ZSYR2K )
44 #define blasf77_zsyrk FORTRAN_NAME( zsyrk, ZSYRK )
45 #define blasf77_zswap FORTRAN_NAME( zswap, ZSWAP )
46 #define blasf77_ztrmm FORTRAN_NAME( ztrmm, ZTRMM )
47 #define blasf77_ztrmv FORTRAN_NAME( ztrmv, ZTRMV )
48 #define blasf77_ztrsm FORTRAN_NAME( ztrsm, ZTRSM )
49 #define blasf77_ztrsv FORTRAN_NAME( ztrsv, ZTRSV )
50 #define blasf77_zgeru FORTRAN_NAME( zgeru, ZGERU )
51 
52 #define lapackf77_zbdsqr FORTRAN_NAME( zbdsqr, ZBDSQR )
53 #define lapackf77_zgebak FORTRAN_NAME( zgebak, ZGEBAK )
54 #define lapackf77_zgebal FORTRAN_NAME( zgebal, ZGEBAL )
55 #define lapackf77_zgebd2 FORTRAN_NAME( zgebd2, ZGEBD2 )
56 #define lapackf77_zgebrd FORTRAN_NAME( zgebrd, ZGEBRD )
57 #define lapackf77_zgeev FORTRAN_NAME( zgeev, ZGEEV )
58 #define lapackf77_zgehd2 FORTRAN_NAME( zgehd2, ZGEHD2 )
59 #define lapackf77_zgehrd FORTRAN_NAME( zgehrd, ZGEHRD )
60 #define lapackf77_zgelqf FORTRAN_NAME( zgelqf, ZGELQF )
61 #define lapackf77_zgels FORTRAN_NAME( zgels, ZGELS )
62 #define lapackf77_zgeqlf FORTRAN_NAME( zgeqlf, ZGEQLF )
63 #define lapackf77_zgeqp3 FORTRAN_NAME( zgeqp3, ZGEQP3 )
64 #define lapackf77_zgeqrf FORTRAN_NAME( zgeqrf, ZGEQRF )
65 #define lapackf77_zgesvd FORTRAN_NAME( zgesvd, ZGESVD )
66 #define lapackf77_zgetrf FORTRAN_NAME( zgetrf, ZGETRF )
67 #define lapackf77_zgetri FORTRAN_NAME( zgetri, ZGETRI )
68 #define lapackf77_zgetrs FORTRAN_NAME( zgetrs, ZGETRS )
69 #define lapackf77_zheev FORTRAN_NAME( zheev, ZHEEV )
70 #define lapackf77_zheevd FORTRAN_NAME( zheevd, ZHEEVD )
71 #define lapackf77_zhegs2 FORTRAN_NAME( zhegs2, ZHEGS2 )
72 #define lapackf77_zhegvd FORTRAN_NAME( zhegvd, ZHEGVD )
73 #define lapackf77_zhetd2 FORTRAN_NAME( zhetd2, ZHETD2 )
74 #define lapackf77_zhetrd FORTRAN_NAME( zhetrd, ZHETRD )
75 #define lapackf77_zhbtrd FORTRAN_NAME( zhbtrd, ZHBTRD )
76 #define lapackf77_zhseqr FORTRAN_NAME( zhseqr, ZHSEQR )
77 #define lapackf77_zlacpy FORTRAN_NAME( zlacpy, ZLACPY )
78 #define lapackf77_zlacgv FORTRAN_NAME( zlacgv, ZLACGV )
79 #define lapackf77_zlange FORTRAN_NAME( zlange, ZLANGE )
80 #define lapackf77_zlanhe FORTRAN_NAME( zlanhe, ZLANHE )
81 #define lapackf77_zlansy FORTRAN_NAME( zlansy, ZLANSY )
82 #define lapackf77_zlarfb FORTRAN_NAME( zlarfb, ZLARFB )
83 #define lapackf77_zlarfg FORTRAN_NAME( zlarfg, ZLARFG )
84 #define lapackf77_zlarft FORTRAN_NAME( zlarft, ZLARFT )
85 #define lapackf77_zlarnv FORTRAN_NAME( zlarnv, ZLARNV )
86 #define lapackf77_zlartg FORTRAN_NAME( zlartg, ZLARTG )
87 #define lapackf77_zlascl FORTRAN_NAME( zlascl, ZLASCL )
88 #define lapackf77_zlaset FORTRAN_NAME( zlaset, ZLASET )
89 #define lapackf77_zlaswp FORTRAN_NAME( zlaswp, ZLASWP )
90 #define lapackf77_zlatrd FORTRAN_NAME( zlatrd, ZLATRD )
91 #define lapackf77_zlabrd FORTRAN_NAME( zlabrd, ZLABRD )
92 #define lapackf77_zlauum FORTRAN_NAME( zlauum, ZLAUUM )
93 #define lapackf77_zpotrf FORTRAN_NAME( zpotrf, ZPOTRF )
94 #define lapackf77_zpotrs FORTRAN_NAME( zpotrs, ZPOTRS )
95 #define lapackf77_zpotri FORTRAN_NAME( zpotri, ZPOTRI )
96 #define lapackf77_ztrevc FORTRAN_NAME( ztrevc, ZTREVC )
97 #define lapackf77_dstebz FORTRAN_NAME( dstebz, DSTEBZ )
98 #define lapackf77_dlamc3 FORTRAN_NAME( dlamc3, DLAMC3 )
99 #define lapackf77_dlaed4 FORTRAN_NAME( dlaed4, DLAED4 )
100 #define lapackf77_dlamrg FORTRAN_NAME( dlamrg, DLAMRG )
101 #define lapackf77_ztrtri FORTRAN_NAME( ztrtri, ZTRTRI )
102 #define lapackf77_zsteqr FORTRAN_NAME( zsteqr, ZSTEQR )
103 #define lapackf77_zstedc FORTRAN_NAME( zstedc, ZSTEDC )
104 #define lapackf77_zstein FORTRAN_NAME( zstein, ZSTEIN )
105 #define lapackf77_zstemr FORTRAN_NAME( zstemr, ZSTEMR )
106 #define lapackf77_zsymv FORTRAN_NAME( zsymv, ZSYMV )
107 #define lapackf77_zung2r FORTRAN_NAME( zung2r, ZUNG2R )
108 #define lapackf77_zungbr FORTRAN_NAME( zungbr, ZUNGBR )
109 #define lapackf77_zunghr FORTRAN_NAME( zunghr, ZUNGHR )
110 #define lapackf77_zunglq FORTRAN_NAME( zunglq, ZUNGLQ )
111 #define lapackf77_zungql FORTRAN_NAME( zungql, ZUNGQL )
112 #define lapackf77_zungqr FORTRAN_NAME( zungqr, ZUNGQR )
113 #define lapackf77_zungtr FORTRAN_NAME( zungtr, ZUNGTR )
114 #define lapackf77_zunm2r FORTRAN_NAME( zunm2r, ZUNM2R )
115 #define lapackf77_zunmbr FORTRAN_NAME( zunmbr, ZUNMBR )
116 #define lapackf77_zunmlq FORTRAN_NAME( zunmlq, ZUNMLQ )
117 #define lapackf77_zunmql FORTRAN_NAME( zunmql, ZUNMQL )
118 #define lapackf77_zunmqr FORTRAN_NAME( zunmqr, ZUNMQR )
119 #define lapackf77_zunmtr FORTRAN_NAME( zunmtr, ZUNMTR )
120 
121 /* testing functions */
122 #define lapackf77_zbdt01 FORTRAN_NAME( zbdt01, ZBDT01 )
123 #define lapackf77_zget22 FORTRAN_NAME( zget22, ZGET22 )
124 #define lapackf77_zqpt01 FORTRAN_NAME( zqpt01, ZQPT01 )
125 #define lapackf77_zhet21 FORTRAN_NAME( zhet21, ZHET21 )
126 #define lapackf77_zhst01 FORTRAN_NAME( zhst01, ZHST01 )
127 #define lapackf77_zqrt02 FORTRAN_NAME( zqrt02, ZQRT02 )
128 #define lapackf77_zunt01 FORTRAN_NAME( zunt01, ZUNT01 )
129 #define lapackf77_zlarfy FORTRAN_NAME( zlarfy, ZLARFY )
130 #define lapackf77_zlarfx FORTRAN_NAME( zlarfx, ZLARFX )
131 #define lapackf77_zstt21 FORTRAN_NAME( zstt21, ZSTT21 )
132 
133 
134 #if defined(PRECISION_z) || defined(PRECISION_c)
135 #define DWORKFORZ double *rwork,
136 #define DWORKFORZ_AND_LD double *rwork, magma_int_t *ldrwork,
137 #define WSPLIT cuDoubleComplex *w
138 #else
139 #define DWORKFORZ
140 #define DWORKFORZ_AND_LD
141 #define WSPLIT double *wr, double *wi
142 #endif
143 
144  /*
145  * BLAS functions (Alphabetical order)
146  */
147 void blasf77_zaxpy(const int *, cuDoubleComplex *, cuDoubleComplex *,
148  const int *, cuDoubleComplex *, const int *);
149 void blasf77_zcopy(const int *, cuDoubleComplex *, const int *,
150  cuDoubleComplex *, const int *);
151 #if defined(PRECISION_z) || defined(PRECISION_c)
152 void blasf77_zdotc(cuDoubleComplex *, int *, cuDoubleComplex *, int *,
153  cuDoubleComplex *, int *);
154 #endif
155 void blasf77_zgemm(const char *, const char *, const int *, const int *, const int *,
156  cuDoubleComplex *, cuDoubleComplex *, const int *,
157  cuDoubleComplex *, const int *, cuDoubleComplex *,
158  cuDoubleComplex *, const int *);
159 void blasf77_zgemv(const char *, const int *, const int *, cuDoubleComplex *,
160  cuDoubleComplex *, const int *, cuDoubleComplex *, const int *,
161  cuDoubleComplex *, cuDoubleComplex *, const int *);
162 void blasf77_zgeru(int *, int *, cuDoubleComplex *, cuDoubleComplex *, int *,
163  cuDoubleComplex *, int *, cuDoubleComplex *, int *);
164 void blasf77_zhemm(const char *, const char *, const int *, const int *,
165  cuDoubleComplex *, cuDoubleComplex *, const int *,
166  cuDoubleComplex *, const int *, cuDoubleComplex *,
167  cuDoubleComplex *, const int *);
168 void blasf77_zhemv(const char *, const int *, cuDoubleComplex *, cuDoubleComplex *,
169  const int *, cuDoubleComplex *, const int *, cuDoubleComplex *,
170  cuDoubleComplex *, const int *);
171 void blasf77_zher2k(const char *, const char *, const int *, const int *,
172  cuDoubleComplex *, cuDoubleComplex *, const int *,
173  cuDoubleComplex *, const int *, double *,
174  cuDoubleComplex *, const int *);
175 void blasf77_zher2(const char *, int *, cuDoubleComplex *,
176  cuDoubleComplex *, int *, cuDoubleComplex *, int *,
177  cuDoubleComplex *, int *);
178 void blasf77_zherk( const char *, const char *, const int *, const int *, double *,
179  cuDoubleComplex *, const int *, double *, cuDoubleComplex *,
180  const int *);
181 void blasf77_zscal( const int *, cuDoubleComplex *, cuDoubleComplex *, const int *);
182 #if defined(PRECISION_z) || defined(PRECISION_c)
183 void blasf77_zdscal( const int *, double *, cuDoubleComplex *, const int *);
184 #endif
185 void blasf77_zsymm( const char *, const char *, const int *, const int *,
186  cuDoubleComplex *, cuDoubleComplex *, const int *,
187  cuDoubleComplex *, const int *, cuDoubleComplex *,
188  cuDoubleComplex *, const int *);
189 void blasf77_zsyr2k(const char *, const char *, const int *, const int *,
190  cuDoubleComplex *, cuDoubleComplex *, const int *,
191  cuDoubleComplex *, const int *, cuDoubleComplex *,
192  cuDoubleComplex *, const int *);
193 void blasf77_zsyrk( const char *, const char *, const int *, const int *,
194  cuDoubleComplex *, cuDoubleComplex *, const int *,
195  cuDoubleComplex *, cuDoubleComplex *, const int *);
196 void blasf77_zswap( int *, cuDoubleComplex *, int *, cuDoubleComplex *, int *);
197 void blasf77_ztrmm( const char *, const char *, const char *, const char *,
198  const int *, const int *, cuDoubleComplex *,
199  cuDoubleComplex *, const int *, cuDoubleComplex *,const int *);
200 void blasf77_ztrmv( const char *, const char *, const char *, const int *,
201  cuDoubleComplex*, const int *, cuDoubleComplex *, const int*);
202 void blasf77_ztrsm( const char *, const char *, const char *, const char *,
203  const int *, const int *, cuDoubleComplex *,
204  cuDoubleComplex *, const int *, cuDoubleComplex *,const int*);
205 void blasf77_ztrsv( const char *, const char *, const char *, const int *,
206  cuDoubleComplex *, const int *, cuDoubleComplex *, const int*);
207 
208  /*
209  * Lapack functions (Alphabetical order)
210  */
211 void lapackf77_zbdsqr(const char *uplo, magma_int_t *n, magma_int_t *nvct,
212  magma_int_t *nru, magma_int_t *ncc, double *D, double *E,
213  cuDoubleComplex *VT, magma_int_t *ldvt,
214  cuDoubleComplex *U, magma_int_t *ldu,
215  cuDoubleComplex *C, magma_int_t *ldc,
216  double *work, magma_int_t *info);
217 void lapackf77_zgebak(const char *job, const char *side, magma_int_t *n,
218  magma_int_t *ilo, magma_int_t *ihi,
219  double *scale, magma_int_t *m,
220  cuDoubleComplex *v, magma_int_t *ldv, magma_int_t *info);
221 void lapackf77_zgebal(const char *job, magma_int_t *n, cuDoubleComplex *A, magma_int_t *lda,
222  magma_int_t *ilo, magma_int_t *ihi, double *scale, magma_int_t *info);
224  cuDoubleComplex *a, magma_int_t *lda, double *d, double *e,
225  cuDoubleComplex *tauq, cuDoubleComplex *taup,
226  cuDoubleComplex *work, magma_int_t *info);
228  cuDoubleComplex *a, magma_int_t *lda, double *d, double *e,
229  cuDoubleComplex *tauq, cuDoubleComplex *taup,
230  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
231 void lapackf77_zgeev(const char *jobl, const char *jobr, magma_int_t *n,
232  cuDoubleComplex *a, magma_int_t *lda, WSPLIT,
233  cuDoubleComplex *vl, magma_int_t *ldvl,
234  cuDoubleComplex *vr, magma_int_t *ldvr,
235  cuDoubleComplex *work, magma_int_t *lwork,
236  DWORKFORZ magma_int_t *info);
238  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
239  cuDoubleComplex *work, magma_int_t *info);
241  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
242  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
244  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
245  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
246 void lapackf77_zgels(const char *trans,
247  magma_int_t *m, magma_int_t *n, magma_int_t *nrhs,
248  cuDoubleComplex *a, magma_int_t *lda,
249  cuDoubleComplex *b, magma_int_t *ldb,
250  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
252  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
253  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
254 void lapackf77_zgeqp3(magma_int_t *m, magma_int_t *n, cuDoubleComplex *a, magma_int_t *lda,
255  magma_int_t *jpvt, cuDoubleComplex *tau,
256  cuDoubleComplex *work, magma_int_t *lwork,
257  DWORKFORZ magma_int_t *info);
259  cuDoubleComplex *a, magma_int_t *lda, cuDoubleComplex *tau,
260  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
262  cuDoubleComplex *a, magma_int_t *lda,
263  magma_int_t *ipiv, magma_int_t *info);
265  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *ipiv,
266  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
267 void lapackf77_zgetrs(const char* trans,
268  magma_int_t *n, magma_int_t *nrhs,
269  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *ipiv,
270  cuDoubleComplex *b, magma_int_t *ldb, magma_int_t *info);
271 void lapackf77_zgesvd(const char *jobu, const char *jobvt,
272  magma_int_t *m, magma_int_t *n,
273  cuDoubleComplex *a, magma_int_t *lda,
274  double *s, cuDoubleComplex *u, magma_int_t *ldu,
275  cuDoubleComplex *vt, magma_int_t *ldvt,
276  cuDoubleComplex *work, magma_int_t *lwork,
277  DWORKFORZ magma_int_t *info );
278 void lapackf77_zheev(const char *jobz, const char *uplo, magma_int_t *n,
279  cuDoubleComplex *a, magma_int_t *lda, double *w,
280  cuDoubleComplex *work, magma_int_t *lwork,
281  DWORKFORZ magma_int_t *info);
282 void lapackf77_zheevd(const char *jobz, const char *uplo, magma_int_t *n,
283  cuDoubleComplex *a, magma_int_t *lda, double *w,
284  cuDoubleComplex *work, magma_int_t *lwork,
286  magma_int_t *liwork, magma_int_t *info);
287 void lapackf77_zhegs2(int *itype, const char *uplo, int *n,
288  cuDoubleComplex *a, int *lda,
289  cuDoubleComplex *b, int *ldb, int *info);
290 void lapackf77_zhegvd(magma_int_t *itype, const char *jobz, const char *uplo,
291  magma_int_t *n, cuDoubleComplex *a, magma_int_t *lda,
292  cuDoubleComplex *b, magma_int_t *ldb, double *w,
293  cuDoubleComplex *work, magma_int_t *lwork,
294  DWORKFORZ_AND_LD magma_int_t *iwork, magma_int_t *liwork,
295  magma_int_t *info);
296 void lapackf77_zhetd2(const char *uplo, magma_int_t *n,
297  cuDoubleComplex *a, magma_int_t *lda,
298  double *d, double *e, cuDoubleComplex *tau, magma_int_t *info);
299 void lapackf77_zhetrd(const char *uplo, magma_int_t *n,
300  cuDoubleComplex *a, magma_int_t *lda,
301  double *d, double *e, cuDoubleComplex *tau,
302  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
303 void lapackf77_zhbtrd(const char *vect, const char *uplo, magma_int_t *n, magma_int_t *kd,
304  cuDoubleComplex *ab, magma_int_t *ldab, double *d__, double *e,
305  cuDoubleComplex *q, magma_int_t *ldq, cuDoubleComplex *work,
306  magma_int_t *info);
307 void lapackf77_zhseqr(const char *job, const char *compz, magma_int_t *n,
308  magma_int_t *ilo, magma_int_t *ihi,
309  cuDoubleComplex *H, magma_int_t *ldh, WSPLIT,
310  cuDoubleComplex *Z, magma_int_t *ldz,
311  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
312 void lapackf77_zlacpy(const char *uplo, magma_int_t *m, magma_int_t *n,
313  const cuDoubleComplex *a, magma_int_t *lda,
314  cuDoubleComplex *b, magma_int_t *ldb);
315 void lapackf77_zlacgv(magma_int_t *n, cuDoubleComplex *x, magma_int_t *incx);
316 double lapackf77_zlange(const char *norm, magma_int_t *m, magma_int_t *n,
317  const cuDoubleComplex *a, magma_int_t *lda, double *work);
318 double lapackf77_zlanhe(const char *norm, const char *uplo, magma_int_t *n,
319  const cuDoubleComplex *a, magma_int_t *lda, double * work);
320 double lapackf77_zlansy(const char *norm, const char *uplo, magma_int_t *n,
321  const cuDoubleComplex *a, magma_int_t *lda, double * work);
322 void lapackf77_zlarfb(const char *side, const char *trans, const char *direct,
323  const char *storev, magma_int_t *m, magma_int_t *n, magma_int_t *k,
324  const cuDoubleComplex *v, magma_int_t *ldv,
325  const cuDoubleComplex *t, magma_int_t *ldt,
326  cuDoubleComplex *c, magma_int_t *ldc,
327  cuDoubleComplex *work, magma_int_t *ldwork);
328 void lapackf77_zlarfg(magma_int_t *n, cuDoubleComplex *alpha,
329  cuDoubleComplex *x, magma_int_t *incx, cuDoubleComplex *tau);
330 void lapackf77_zlarft(const char *direct, const char *storev, magma_int_t *n, magma_int_t *k,
331  cuDoubleComplex *v, magma_int_t *ldv, const cuDoubleComplex *tau,
332  cuDoubleComplex *t, magma_int_t *ldt);
333 void lapackf77_zlarnv(magma_int_t *idist, magma_int_t *iseed, magma_int_t *n,
334  cuDoubleComplex *x);
335 void lapackf77_zlartg(cuDoubleComplex *F, cuDoubleComplex *G, double *cs,
336  cuDoubleComplex *SN, cuDoubleComplex *R);
337 void lapackf77_zlascl(const char *type, magma_int_t *kl, magma_int_t *ku,
338  double *cfrom, double *cto,
339  magma_int_t *m, magma_int_t *n,
340  cuDoubleComplex *A, magma_int_t *lda, magma_int_t *info);
341 void lapackf77_zlaset(const char *uplo, magma_int_t *m, magma_int_t *n,
342  cuDoubleComplex *alpha, cuDoubleComplex *beta,
343  cuDoubleComplex *A, magma_int_t *lda);
344 void lapackf77_zlaswp(magma_int_t *n, cuDoubleComplex *a, magma_int_t *lda,
345  magma_int_t *k1, magma_int_t *k2, magma_int_t *ipiv,
346  magma_int_t *incx);
347 void lapackf77_zlatrd(const char *uplo, magma_int_t *n, magma_int_t *nb,
348  cuDoubleComplex *a, magma_int_t *lda, double *e,
349  cuDoubleComplex *tau, cuDoubleComplex *work, magma_int_t *ldwork);
351  cuDoubleComplex *a, magma_int_t *lda, double *d__, double *e,
352  cuDoubleComplex *tauq, cuDoubleComplex *taup,
353  cuDoubleComplex *x, magma_int_t *ldx,
354  cuDoubleComplex *y, magma_int_t *ldy);
355 void lapackf77_zpotrf(const char *uplo, magma_int_t *n,
356  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *info);
357 void lapackf77_zpotrs(const char *uplo, magma_int_t *n, magma_int_t *nrhs,
358  cuDoubleComplex *a, magma_int_t *lda,
359  cuDoubleComplex *b, magma_int_t *ldb, magma_int_t *info);
360 void lapackf77_zpotri(const char *uplo, magma_int_t *n,
361  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *info);
362 void lapackf77_zlauum(const char *uplo, magma_int_t *n,
363  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *info);
364 void lapackf77_ztrevc(const char *side, const char *howmny, magma_int_t *select, magma_int_t *n,
365  cuDoubleComplex *T, magma_int_t *ldt, cuDoubleComplex *VL, magma_int_t *ldvl,
366  cuDoubleComplex *VR, magma_int_t *ldvr, magma_int_t *MM, magma_int_t *M,
367  cuDoubleComplex *work, DWORKFORZ magma_int_t *info);
368 void lapackf77_dstebz(const char *range, const char *order, magma_int_t *n, double *vl, double *vu,
369  magma_int_t *il, magma_int_t *iu, double *abstol,
370  double *d__, double *e, magma_int_t *m, magma_int_t *nsplit,
371  double *w, magma_int_t *iblock, magma_int_t *isplit, double *work,
372  magma_int_t *iwork, magma_int_t *info);
373 double lapackf77_dlamc3(double* a, double* b);
374 void lapackf77_dlamrg(magma_int_t* n1, magma_int_t* n2, double* a,
375  magma_int_t* dtrd1, magma_int_t* dtrd2, magma_int_t* index);
376 void lapackf77_dlaed4(magma_int_t* n, magma_int_t* i, double* d, double* z,
377  double* delta, double* rho, double* dlam, magma_int_t* info);
378 void lapackf77_zsteqr(const char *compz, magma_int_t *n, double *D, double *E,
379  cuDoubleComplex *Z, magma_int_t *ldz,
380  double *work, magma_int_t *info);
381 void lapackf77_zstedc(const char *compz, magma_int_t *n, double *D, double *E,
382  cuDoubleComplex *Z, magma_int_t *ldz,
383  cuDoubleComplex *work, magma_int_t *ldwork,
384  DWORKFORZ_AND_LD magma_int_t *iwork, magma_int_t *liwork,
385  magma_int_t *info);
386 void lapackf77_zstein(magma_int_t *n, double *d__, double *e,
387  magma_int_t *m, double *w, magma_int_t *iblock, magma_int_t *isplit,
388  cuDoubleComplex *z__, magma_int_t *ldz, double *work, magma_int_t *iwork,
389  magma_int_t *ifail, magma_int_t *info);
390 void lapackf77_zstemr(const char *jobz, const char *range, magma_int_t *n, double *d__, double *e,
391  double *vl, double *vu, magma_int_t *il, magma_int_t *iu, magma_int_t *m,
392  double *w, cuDoubleComplex *z__, magma_int_t *ldz, magma_int_t *nzc,
393  magma_int_t *isuppz, magma_int_t *tryrac, double *work, magma_int_t *lwork,
394  magma_int_t *iwork, magma_int_t *liwork, magma_int_t *info);
395 void lapackf77_ztrtri(const char *uplo, const char *diag, magma_int_t *n,
396  cuDoubleComplex *a, magma_int_t *lda, magma_int_t *info);
397 #if defined(PRECISION_z) || defined(PRECISION_c)
398 void lapackf77_zsymv(const char *uplo, const magma_int_t *N, const cuDoubleComplex *alpha,
399  const cuDoubleComplex *A, const magma_int_t *lda,
400  const cuDoubleComplex *X, const magma_int_t *incX,
401  const cuDoubleComplex *beta,
402  cuDoubleComplex *Y, const magma_int_t *incY);
403 #endif
405  cuDoubleComplex *a, magma_int_t *lda,
406  const cuDoubleComplex *tau, cuDoubleComplex *work,
407  magma_int_t *info);
408 void lapackf77_zungbr(const char *vect, magma_int_t *m, magma_int_t *n, magma_int_t *k,
409  cuDoubleComplex *a, magma_int_t *lda, const cuDoubleComplex *tau,
410  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
412  cuDoubleComplex *a, magma_int_t *lda, const cuDoubleComplex *tau,
413  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
415  cuDoubleComplex *a, magma_int_t *lda, const cuDoubleComplex *tau,
416  cuDoubleComplex *work, magma_int_t *ldwork, magma_int_t *info);
418  cuDoubleComplex *, magma_int_t *, cuDoubleComplex *,
419  cuDoubleComplex *, magma_int_t *, magma_int_t *);
421  cuDoubleComplex *a, magma_int_t *lda, const cuDoubleComplex *tau,
422  cuDoubleComplex *work, magma_int_t *ldwork, magma_int_t *info);
423 void lapackf77_zungtr(const char *uplo, magma_int_t *n,
424  cuDoubleComplex *a, magma_int_t *lda, const cuDoubleComplex *tau,
425  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
426 void lapackf77_zunm2r(const char *side, const char *trans,
427  magma_int_t *m, magma_int_t *n, magma_int_t *k,
428  const cuDoubleComplex *a, magma_int_t *lda,
429  const cuDoubleComplex *tau, cuDoubleComplex *c, magma_int_t *ldc,
430  cuDoubleComplex *work, magma_int_t *info);
431 void lapackf77_zunmbr(const char *vect, const char *side, const char *trans,
432  magma_int_t *M, magma_int_t *N, magma_int_t *K,
433  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *Tau,
434  cuDoubleComplex *C, magma_int_t *ldc,
435  cuDoubleComplex *work, magma_int_t *ldwork, magma_int_t *info);
436 void lapackf77_zunmlq(const char *side, const char *trans,
438  const cuDoubleComplex *a, magma_int_t *lda,
439  const cuDoubleComplex *tau, cuDoubleComplex *c, magma_int_t *ldc,
440  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
441 void lapackf77_zunmql(const char *side, const char *trans,
443  const cuDoubleComplex *a, magma_int_t *lda,
444  const cuDoubleComplex *tau, cuDoubleComplex *c, magma_int_t *ldc,
445  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
446 void lapackf77_zunmqr(const char *side, const char *trans,
447  magma_int_t *m, magma_int_t *n, magma_int_t *k,
448  const cuDoubleComplex *a, magma_int_t *lda,
449  const cuDoubleComplex *tau, cuDoubleComplex *c, magma_int_t *ldc,
450  cuDoubleComplex *work, magma_int_t *lwork, magma_int_t *info);
451 void lapackf77_zunmtr(const char *side, const char *uplo, const char *trans,
452  magma_int_t *M, magma_int_t *N,
453  cuDoubleComplex *A, magma_int_t *lda, cuDoubleComplex *Tau,
454  cuDoubleComplex *C, magma_int_t *ldc,
455  cuDoubleComplex *work, magma_int_t *ldwork, magma_int_t *info);
456 
457 
458  /*
459  * Testing functions
460  */
461 
462 #if defined(PRECISION_z) || defined(PRECISION_c)
463 
464 void lapackf77_zbdt01(int *m, int *n, int *kd, cuDoubleComplex *A, int *lda,
465  cuDoubleComplex *Q, int *ldq, double *D, double *E,
466  cuDoubleComplex *PT, int *ldpt, cuDoubleComplex *work,
467  double *rwork, double *resid);
468 void lapackf77_zget22(const char *transa, const char *transe, const char *transw, int *n,
469  cuDoubleComplex *a, int *lda, cuDoubleComplex *e, int *lde,
470  cuDoubleComplex *w, cuDoubleComplex *work,
471  double *rwork, double *result);
472 void lapackf77_zhet21(int *itype, const char *uplo, int *n, int *kband,
473  cuDoubleComplex *A, int *lda, double *D, double *E,
474  cuDoubleComplex *U, int *ldu, cuDoubleComplex *V, int *ldv,
475  cuDoubleComplex *TAU, cuDoubleComplex *work,
476  double *rwork, double *result);
477 void lapackf77_zhst01(int *n, int *ilo, int *ihi, cuDoubleComplex *A, int *lda,
478  cuDoubleComplex *H, int *ldh, cuDoubleComplex *Q, int *ldq,
479  cuDoubleComplex *work, int *lwork, double *rwork, double *result);
480 void lapackf77_zstt21(int *n, int *kband, double *AD, double *AE, double *SD,
481  double *SE, cuDoubleComplex *U, int *ldu,
482  cuDoubleComplex *work, double *rwork, double *result);
483 void lapackf77_zunt01(const char *rowcol, int *m, int *n, cuDoubleComplex *U, int *ldu,
484  cuDoubleComplex *work, int *lwork, double *rwork, double *resid);
485 
486 #else
487 
488 void lapackf77_zbdt01(int *m, int *n, int *kd, cuDoubleComplex *A, int *lda,
489  cuDoubleComplex *Q, int *ldq, double *D, double *E,
490  cuDoubleComplex *PT, int *ldpt,
491  cuDoubleComplex *work, double *resid);
492 void lapackf77_zget22(const char *transa, const char *transe, const char *transw, int *n,
493  cuDoubleComplex *a, int *lda, cuDoubleComplex *e, int *lde,
494  cuDoubleComplex *wr, cuDoubleComplex *wi,
495  double *work, double *result);
496 void lapackf77_zhet21(int *itype, const char *uplo, int *n, int *kband,
497  cuDoubleComplex *A, int *lda, double *D, double *E,
498  cuDoubleComplex *U, int *ldu, cuDoubleComplex *V, int *ldv,
499  cuDoubleComplex *TAU, cuDoubleComplex *work, double *result);
500 void lapackf77_zhst01(int *n, int *ilo, int *ihi, cuDoubleComplex *A, int *lda,
501  cuDoubleComplex *H, int *ldh, cuDoubleComplex *Q, int *ldq,
502  cuDoubleComplex *work, int *lwork, double *result);
503 void lapackf77_zstt21(int *n, int *kband, double *AD, double *AE, double *SD,
504  double *SE, cuDoubleComplex *U, int *ldu,
505  cuDoubleComplex *work, double *result);
506 void lapackf77_zunt01(const char *rowcol, int *m, int *n, cuDoubleComplex *U, int *ldu,
507  cuDoubleComplex *work, int *lwork, double *resid);
508 #endif
509 
510 void lapackf77_zlarfy(const char *uplo, int *N, cuDoubleComplex *V, int *incv,
511  cuDoubleComplex *tau, cuDoubleComplex *C, int *ldc,
512  cuDoubleComplex *work);
513 void lapackf77_zlarfx(const char *, int *, int *,
514  cuDoubleComplex *, cuDoubleComplex *,
515  cuDoubleComplex *, int *, cuDoubleComplex *);
516 double lapackf77_zqpt01(int *m, int *n, int *k, cuDoubleComplex *a,
517  cuDoubleComplex *af, int *lda, cuDoubleComplex *tau, int *jpvt,
518  cuDoubleComplex *work, int *lwork);
519 void lapackf77_zqrt02(int *m, int *n, int *k, cuDoubleComplex *A, cuDoubleComplex *AF,
520  cuDoubleComplex *Q, cuDoubleComplex *R, int *lda,
521  cuDoubleComplex *TAU, cuDoubleComplex *work, int *lwork,
522  double *rwork, double *result);
523 
524 #ifdef __cplusplus
525 }
526 #endif
527 
528 #undef DWORKFORZ
529 #undef DWORKFORZ_AND_LD
530 #undef WSPLIT
531 #undef PRECISION_z
532 #endif /* MAGMA ZLAPACK */