11 #ifndef MAGMA_ZLAPACK_H
12 #define MAGMA_ZLAPACK_H
23 #define blasf77_zaxpy FORTRAN_NAME( zaxpy, ZAXPY )
24 #define blasf77_zcopy FORTRAN_NAME( zcopy, ZCOPY )
27 #if defined(PRECISION_z) || defined(PRECISION_c)
28 #define blasf77_zdotc zdotc
30 #define blasf77_zdotc FORTRAN_NAME( zdotc, ZDOTC )
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_zherk FORTRAN_NAME( zherk, ZHERK )
39 #define blasf77_zscal FORTRAN_NAME( zscal, ZSCAL )
40 #define blasf77_zdscal FORTRAN_NAME( zdscal, ZDSCAL )
41 #define blasf77_zsymm FORTRAN_NAME( zsymm, ZSYMM )
42 #define blasf77_zsyr2k FORTRAN_NAME( zsyr2k, ZSYR2K )
43 #define blasf77_zsyrk FORTRAN_NAME( zsyrk, ZSYRK )
44 #define blasf77_zswap FORTRAN_NAME( zswap, ZSWAP )
45 #define blasf77_ztrmm FORTRAN_NAME( ztrmm, ZTRMM )
46 #define blasf77_ztrmv FORTRAN_NAME( ztrmv, ZTRMV )
47 #define blasf77_ztrsm FORTRAN_NAME( ztrsm, ZTRSM )
48 #define blasf77_ztrsv FORTRAN_NAME( ztrsv, ZTRSV )
49 #define blasf77_zgeru FORTRAN_NAME( zgeru, ZGERU )
51 #define lapackf77_zbdsqr FORTRAN_NAME( zbdsqr, ZBDSQR )
52 #define lapackf77_zgebak FORTRAN_NAME( zgebak, ZGEBAK )
53 #define lapackf77_zgebal FORTRAN_NAME( zgebal, ZGEBAL )
54 #define lapackf77_zgebd2 FORTRAN_NAME( zgebd2, ZGEBD2 )
55 #define lapackf77_zgebrd FORTRAN_NAME( zgebrd, ZGEBRD )
56 #define lapackf77_zgeev FORTRAN_NAME( zgeev, ZGEEV )
57 #define lapackf77_zgehd2 FORTRAN_NAME( zgehd2, ZGEHD2 )
58 #define lapackf77_zgehrd FORTRAN_NAME( zgehrd, ZGEHRD )
59 #define lapackf77_zgelqf FORTRAN_NAME( zgelqf, ZGELQF )
60 #define lapackf77_zgels FORTRAN_NAME( zgels, ZGELS )
61 #define lapackf77_zgeqlf FORTRAN_NAME( zgeqlf, ZGEQLF )
62 #define lapackf77_zgeqrf FORTRAN_NAME( zgeqrf, ZGEQRF )
63 #define lapackf77_zgesvd FORTRAN_NAME( zgesvd, ZGESVD )
64 #define lapackf77_zgetrf FORTRAN_NAME( zgetrf, ZGETRF )
65 #define lapackf77_zgetrs FORTRAN_NAME( zgetrs, ZGETRS )
66 #define lapackf77_zheev FORTRAN_NAME( zheev, ZHEEV )
67 #define lapackf77_zheevd FORTRAN_NAME( zheevd, ZHEEVD )
68 #define lapackf77_zhegs2 FORTRAN_NAME( zhegs2, ZHEGS2 )
69 #define lapackf77_zhegvd FORTRAN_NAME( zhegvd, ZHEGVD )
70 #define lapackf77_zhetd2 FORTRAN_NAME( zhetd2, ZHETD2 )
71 #define lapackf77_zhetrd FORTRAN_NAME( zhetrd, ZHETRD )
72 #define lapackf77_zhseqr FORTRAN_NAME( zhseqr, ZHSEQR )
73 #define lapackf77_zlacpy FORTRAN_NAME( zlacpy, ZLACPY )
74 #define lapackf77_zlacgv FORTRAN_NAME( zlacgv, ZLACGV )
75 #define lapackf77_zlange FORTRAN_NAME( zlange, ZLANGE )
76 #define lapackf77_zlanhe FORTRAN_NAME( zlanhe, ZLANHE )
77 #define lapackf77_zlansy FORTRAN_NAME( zlansy, ZLANSY )
78 #define lapackf77_zlarfb FORTRAN_NAME( zlarfb, ZLARFB )
79 #define lapackf77_zlarfg FORTRAN_NAME( zlarfg, ZLARFG )
80 #define lapackf77_zlarft FORTRAN_NAME( zlarft, ZLARFT )
81 #define lapackf77_zlarnv FORTRAN_NAME( zlarnv, ZLARNV )
82 #define lapackf77_zlartg FORTRAN_NAME( zlartg, ZLARTG )
83 #define lapackf77_zlascl FORTRAN_NAME( zlascl, ZLASCL )
84 #define lapackf77_zlaset FORTRAN_NAME( zlaset, ZLASET )
85 #define lapackf77_zlaswp FORTRAN_NAME( zlaswp, ZLASWP )
86 #define lapackf77_zlatrd FORTRAN_NAME( zlatrd, ZLATRD )
87 #define lapackf77_zlabrd FORTRAN_NAME( zlabrd, ZLABRD )
88 #define lapackf77_zlauum FORTRAN_NAME( zlauum, ZLAUUM )
89 #define lapackf77_zpotrf FORTRAN_NAME( zpotrf, ZPOTRF )
90 #define lapackf77_zpotrs FORTRAN_NAME( zpotrs, ZPOTRS )
91 #define lapackf77_zpotri FORTRAN_NAME( zpotri, ZPOTRI )
92 #define lapackf77_ztrevc FORTRAN_NAME( ztrevc, ZTREVC )
93 #define lapackf77_ztrtri FORTRAN_NAME( ztrtri, ZTRTRI )
94 #define lapackf77_zsteqr FORTRAN_NAME( zsteqr, ZSTEQR )
95 #define lapackf77_zstedc FORTRAN_NAME( zstedc, ZSTEDC )
96 #define lapackf77_zsymv FORTRAN_NAME( zsymv, ZSYMV )
97 #define lapackf77_zung2r FORTRAN_NAME( zung2r, ZUNG2R )
98 #define lapackf77_zungbr FORTRAN_NAME( zungbr, ZUNGBR )
99 #define lapackf77_zunghr FORTRAN_NAME( zunghr, ZUNGHR )
100 #define lapackf77_zunglq FORTRAN_NAME( zunglq, ZUNGLQ )
101 #define lapackf77_zungqr FORTRAN_NAME( zungqr, ZUNGQR )
102 #define lapackf77_zungtr FORTRAN_NAME( zungtr, ZUNGTR )
103 #define lapackf77_zunm2r FORTRAN_NAME( zunm2r, ZUNM2R )
104 #define lapackf77_zunmbr FORTRAN_NAME( zunmbr, ZUNMBR )
105 #define lapackf77_zunmlq FORTRAN_NAME( zunmlq, ZUNMLQ )
106 #define lapackf77_zunmql FORTRAN_NAME( zunmql, ZUNMQL )
107 #define lapackf77_zunmqr FORTRAN_NAME( zunmqr, ZUNMQR )
108 #define lapackf77_zunmtr FORTRAN_NAME( zunmtr, ZUNMTR )
111 #define lapackf77_zbdt01 FORTRAN_NAME( zbdt01, ZBDT01 )
112 #define lapackf77_zget22 FORTRAN_NAME( zget22, ZGET22 )
113 #define lapackf77_zhet21 FORTRAN_NAME( zhet21, ZHET21 )
114 #define lapackf77_zhst01 FORTRAN_NAME( zhst01, ZHST01 )
115 #define lapackf77_zqrt02 FORTRAN_NAME( zqrt02, ZQRT02 )
116 #define lapackf77_zunt01 FORTRAN_NAME( zunt01, ZUNT01 )
117 #define lapackf77_zlarfy FORTRAN_NAME( zlarfy, ZLARFY )
118 #define lapackf77_zstt21 FORTRAN_NAME( zstt21, ZSTT21 )
121 #if defined(PRECISION_z) || defined(PRECISION_c)
122 #define DWORKFORZ double *rwork,
123 #define DWORKFORZ_AND_LD double *rwork, magma_int_t *ldrwork,
124 #define WSPLIT cuDoubleComplex *w
127 #define DWORKFORZ_AND_LD
128 #define WSPLIT double *wr, double *wi
134 void blasf77_zaxpy(
const int *, cuDoubleComplex *, cuDoubleComplex *,
135 const int *, cuDoubleComplex *,
const int *);
136 void blasf77_zcopy(
const int *, cuDoubleComplex *,
const int *,
137 cuDoubleComplex *,
const int *);
138 #if defined(PRECISION_z) || defined(PRECISION_c)
139 void blasf77_zdotc(cuDoubleComplex *,
int *, cuDoubleComplex *,
int *,
140 cuDoubleComplex *,
int *);
142 void blasf77_zgemm(
const char *,
const char *,
const int *,
const int *,
const int *,
143 cuDoubleComplex *, cuDoubleComplex *,
const int *,
144 cuDoubleComplex *,
const int *, cuDoubleComplex *,
145 cuDoubleComplex *,
const int *);
146 void blasf77_zgemv(
const char *,
const int *,
const int *, cuDoubleComplex *,
147 cuDoubleComplex *,
const int *, cuDoubleComplex *,
const int *,
148 cuDoubleComplex *, cuDoubleComplex *,
const int *);
149 void blasf77_zgeru(
int *,
int *, cuDoubleComplex *, cuDoubleComplex *,
int *,
150 cuDoubleComplex *,
int *, cuDoubleComplex *,
int *);
151 void blasf77_zhemm(
const char *,
const char *,
const int *,
const int *,
152 cuDoubleComplex *, cuDoubleComplex *,
const int *,
153 cuDoubleComplex *,
const int *, cuDoubleComplex *,
154 cuDoubleComplex *,
const int *);
155 void blasf77_zhemv(
const char *,
const int *, cuDoubleComplex *, cuDoubleComplex *,
156 const int *, cuDoubleComplex *,
const int *, cuDoubleComplex *,
157 cuDoubleComplex *,
const int *);
158 void blasf77_zher2k(
const char *,
const char *,
const int *,
const int *,
159 cuDoubleComplex *, cuDoubleComplex *,
const int *,
160 cuDoubleComplex *,
const int *,
double *,
161 cuDoubleComplex *,
const int *);
162 void blasf77_zherk(
const char *,
const char *,
const int *,
const int *,
double *,
163 cuDoubleComplex *,
const int *,
double *, cuDoubleComplex *,
165 void blasf77_zscal(
const int *, cuDoubleComplex *, cuDoubleComplex *,
const int *);
166 #if defined(PRECISION_z) || defined(PRECISION_c)
167 void blasf77_zdscal(
const int *,
double *, cuDoubleComplex *,
const int *);
169 void blasf77_zsymm(
const char *,
const char *,
const int *,
const int *,
170 cuDoubleComplex *, cuDoubleComplex *,
const int *,
171 cuDoubleComplex *,
const int *, cuDoubleComplex *,
172 cuDoubleComplex *,
const int *);
173 void blasf77_zsyr2k(
const char *,
const char *,
const int *,
const int *,
174 cuDoubleComplex *, cuDoubleComplex *,
const int *,
175 cuDoubleComplex *,
const int *, cuDoubleComplex *,
176 cuDoubleComplex *,
const int *);
177 void blasf77_zsyrk(
const char *,
const char *,
const int *,
const int *,
178 cuDoubleComplex *, cuDoubleComplex *,
const int *,
179 cuDoubleComplex *, cuDoubleComplex *,
const int *);
180 void blasf77_zswap(
int *, cuDoubleComplex *,
int *, cuDoubleComplex *,
int *);
181 void blasf77_ztrmm(
const char *,
const char *,
const char *,
const char *,
182 const int *,
const int *, cuDoubleComplex *,
183 cuDoubleComplex *,
const int *, cuDoubleComplex *,
const int *);
184 void blasf77_ztrmv(
const char *,
const char *,
const char *,
const int *,
185 cuDoubleComplex*,
const int *, cuDoubleComplex *,
const int*);
186 void blasf77_ztrsm(
const char *,
const char *,
const char *,
const char *,
187 const int *,
const int *, cuDoubleComplex *,
188 cuDoubleComplex *,
const int *, cuDoubleComplex *,
const int*);
189 void blasf77_ztrsv(
const char *,
const char *,
const char *,
const int *,
190 cuDoubleComplex *,
const int *, cuDoubleComplex *,
const int*);
208 cuDoubleComplex *a,
magma_int_t *lda,
double *d,
double *e,
209 cuDoubleComplex *tauq, cuDoubleComplex *taup,
212 cuDoubleComplex *a,
magma_int_t *lda,
double *d,
double *e,
213 cuDoubleComplex *tauq, cuDoubleComplex *taup,
222 cuDoubleComplex *a,
magma_int_t *lda, cuDoubleComplex *tau,
225 cuDoubleComplex *a,
magma_int_t *lda, cuDoubleComplex *tau,
228 cuDoubleComplex *a,
magma_int_t *lda, cuDoubleComplex *tau,
236 cuDoubleComplex *a,
magma_int_t *lda, cuDoubleComplex *tau,
239 cuDoubleComplex *a,
magma_int_t *lda, cuDoubleComplex *tau,
265 cuDoubleComplex *a,
int *lda,
266 cuDoubleComplex *b,
int *ldb,
int *info);
275 double *d,
double *e, cuDoubleComplex *tau,
magma_int_t *info);
278 double *d,
double *e, cuDoubleComplex *tau,
302 cuDoubleComplex *x,
magma_int_t *incx, cuDoubleComplex *tau);
304 cuDoubleComplex *v,
magma_int_t *ldv,
const cuDoubleComplex *tau,
309 cuDoubleComplex *SN, cuDoubleComplex *R);
311 double *cfrom,
double *cto,
315 cuDoubleComplex *alpha, cuDoubleComplex *beta,
324 cuDoubleComplex *a,
magma_int_t *lda,
double *d__,
double *e,
325 cuDoubleComplex *tauq, cuDoubleComplex *taup,
351 #if defined(PRECISION_z) || defined(PRECISION_c)
355 const cuDoubleComplex *beta,
360 const cuDoubleComplex *tau, cuDoubleComplex *
work,
363 cuDoubleComplex *a,
magma_int_t *lda,
const cuDoubleComplex *tau,
366 cuDoubleComplex *a,
magma_int_t *lda,
const cuDoubleComplex *tau,
369 cuDoubleComplex *a,
magma_int_t *lda,
const cuDoubleComplex *tau,
372 cuDoubleComplex *a,
magma_int_t *lda,
const cuDoubleComplex *tau,
375 cuDoubleComplex *a,
magma_int_t *lda,
const cuDoubleComplex *tau,
380 const cuDoubleComplex *tau, cuDoubleComplex *
c,
magma_int_t *ldc,
384 cuDoubleComplex *
A,
magma_int_t *lda, cuDoubleComplex *Tau,
390 const cuDoubleComplex *tau, cuDoubleComplex *
c,
magma_int_t *ldc,
395 const cuDoubleComplex *tau, cuDoubleComplex *
c,
magma_int_t *ldc,
400 const cuDoubleComplex *tau, cuDoubleComplex *
c,
magma_int_t *ldc,
404 cuDoubleComplex *
A,
magma_int_t *lda, cuDoubleComplex *Tau,
413 #if defined(PRECISION_z) || defined(PRECISION_c)
416 cuDoubleComplex *
Q,
int *ldq,
double *D,
double *
E,
417 cuDoubleComplex *PT,
int *ldpt, cuDoubleComplex *
work,
418 double *rwork,
double *resid);
420 cuDoubleComplex *a,
int *lda, cuDoubleComplex *e,
int *lde,
421 cuDoubleComplex *w, cuDoubleComplex *
work,
422 double *rwork,
double *result);
424 cuDoubleComplex *
A,
int *lda,
double *D,
double *
E,
425 cuDoubleComplex *U,
int *ldu, cuDoubleComplex *
V,
int *ldv,
426 cuDoubleComplex *
TAU, cuDoubleComplex *
work,
427 double *rwork,
double *result);
429 cuDoubleComplex *H,
int *ldh, cuDoubleComplex *
Q,
int *ldq,
430 cuDoubleComplex *
work,
int *lwork,
double *rwork,
double *result);
431 void lapackf77_zstt21(
int *n,
int *kband,
double *AD,
double *AE,
double *SD,
432 double *SE, cuDoubleComplex *U,
int *ldu,
433 cuDoubleComplex *
work,
double *rwork,
double *result);
434 void lapackf77_zunt01(
const char *rowcol,
int *m,
int *n, cuDoubleComplex *U,
int *ldu,
435 cuDoubleComplex *
work,
int *lwork,
double *rwork,
double *resid);
440 cuDoubleComplex *
Q,
int *ldq,
double *D,
double *
E,
441 cuDoubleComplex *PT,
int *ldpt,
442 cuDoubleComplex *
work,
double *resid);
444 cuDoubleComplex *a,
int *lda, cuDoubleComplex *e,
int *lde,
445 cuDoubleComplex *wr, cuDoubleComplex *wi,
446 double *
work,
double *result);
448 cuDoubleComplex *
A,
int *lda,
double *D,
double *
E,
449 cuDoubleComplex *U,
int *ldu, cuDoubleComplex *
V,
int *ldv,
450 cuDoubleComplex *
TAU, cuDoubleComplex *
work,
double *result);
452 cuDoubleComplex *H,
int *ldh, cuDoubleComplex *
Q,
int *ldq,
453 cuDoubleComplex *
work,
int *lwork,
double *result);
454 void lapackf77_zstt21(
int *n,
int *kband,
double *AD,
double *AE,
double *SD,
455 double *SE, cuDoubleComplex *U,
int *ldu,
456 cuDoubleComplex *
work,
double *result);
457 void lapackf77_zunt01(
const char *rowcol,
int *m,
int *n, cuDoubleComplex *U,
int *ldu,
458 cuDoubleComplex *
work,
int *lwork,
double *resid);
462 cuDoubleComplex *tau, cuDoubleComplex *
C,
int *ldc,
463 cuDoubleComplex *
work);
464 void lapackf77_zqrt02(
int *m,
int *n,
int *k, cuDoubleComplex *
A, cuDoubleComplex *AF,
465 cuDoubleComplex *
Q, cuDoubleComplex *R,
int *lda,
466 cuDoubleComplex *
TAU, cuDoubleComplex *
work,
int *lwork,
467 double *rwork,
double *result);
474 #undef DWORKFORZ_AND_LD