Cytnx v0.7.6
Loading...
Searching...
No Matches
lapack_wrapper.hpp
Go to the documentation of this file.
1#ifndef __LAPACK_WRAPPER_H__
2#define __LAPACK_WRAPPER_H__
3
4#include <stdint.h>
5
6#include <complex>
7#include <complex.h>
8#include <algorithm>
9#include "Type.hpp"
10
11
12#ifdef UNI_MKL
13 #include <mkl.h>
14 typedef MKL_INT blas_int;
15
16#else
17 //#include <cblas.h>
18 //#ifdef BLAS_ILP64
19 // typedef int64_t blas_int;
20 //#else
21 typedef int32_t blas_int;
22 //#endif
23 #include <lapacke.h>
24
25
26 extern "C" {
27
28 // BLAS functions
29 void dgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
30 const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb,
31 const double *beta, double *c, const blas_int *ldc);
32 void sgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
33 const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb,
34 const float *beta, float *c, const blas_int *ldc);
35 void zgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
36 const std::complex<double> *alpha, const std::complex<double> *a, const blas_int *lda, const std::complex<double> *b, const blas_int *ldb,
37 const std::complex<double> *beta, std::complex<double> *c, const blas_int *ldc);
38 void cgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
39 const std::complex<float> *alpha, const std::complex<float> *a, const blas_int *lda, const std::complex<float> *b, const blas_int *ldb,
40 const std::complex<float> *beta, std::complex<float> *c, const blas_int *ldc);
41
42 //void zgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
43 // const double _Complex *alpha, const double _Complex *a, const blas_int *lda, const double _Complex *b, const blas_int *ldb,
44 // const double _Complex *beta, double _Complex *c, const blas_int *ldc);
45
46 double dasum_(const blas_int *n, const double *x, const blas_int *incx);
47
48 void scopy_(const blas_int *n, const float *x, const blas_int *incx, float *y, const blas_int *incy);
49 void dcopy_(const blas_int *n, const double *x, const blas_int *incx, double *y, const blas_int *incy);
50 //void zcopy_(const blas_int *n, const double *x, const blas_int *incx, std::complex<double> *y, const blas_int *incy);
51
52 void daxpy_(const blas_int *n, const double *alpha, const double *x,
53 const blas_int *incx, double *y, const blas_int *incy);
54 void saxpy_(const blas_int *n, const float *alpha, const float *x,
55 const blas_int *incx, float *y, const blas_int *incy);
56 void zaxpy_(const blas_int *n, const std::complex<double> *alpha, const std::complex<double> *x,
57 const blas_int *incx, std::complex<double> *y, const blas_int *incy);
58 void caxpy_(const blas_int *n, const std::complex<float> *alpha, const std::complex<float> *x,
59 const blas_int *incx, std::complex<float> *y, const blas_int *incy);
60 void dscal_(const blas_int *n, const double *a, double *x, const blas_int *incx);
61 void sscal_(const blas_int *n, const float *a, float *x, const blas_int *incx);
62 void zscal_(const blas_int *n, const std::complex<double> *a, std::complex<double> *x, const blas_int *incx);
63 void cscal_(const blas_int *n, const std::complex<float> *a, std::complex<float> *x, const blas_int *incx);
64 void zdscal_(const blas_int *n, const double *a, std::complex<double> *x, const blas_int *incx);
65
66
67 float snrm2_(const blas_int *n, const float *x, const blas_int *incx);
68 float scnrm2_(const blas_int *n, const std::complex<float> *x, const blas_int *incx);
69 double dnrm2_(const blas_int *n, const double *x, const blas_int *incx);
70 double dznrm2_(const blas_int *n, const std::complex<double> *x, const blas_int *incx);
71
72 void sgemv_(const char *trans, const blas_int *m, const blas_int *n,
73 const float *alpha, const float *a, const blas_int *lda,
74 const float *x, const blas_int *incx, const float *beta,
75 const float *y, const blas_int *incy);
76
77 void dgemv_(const char *trans, const blas_int *m, const blas_int *n,
78 const double *alpha, const double *a, const blas_int *lda,
79 const double *x, const blas_int *incx, const double *beta,
80 const double *y, const blas_int *incy);
81
82 void zgemv_(const char *trans, const blas_int *m, const blas_int *n,
83 const std::complex<double> *alpha, const std::complex<double> *a, const blas_int *lda,
84 const std::complex<double> *x,const blas_int *incx, const std::complex<double> *beta,
85 const std::complex<double> *y, const blas_int *incy);
86
87 void cgemv_(const char *trans, const blas_int *m, const blas_int *n,
88 const std::complex<float> *alpha, const std::complex<float> *a, const blas_int *lda,
89 const std::complex<float> *x,const blas_int *incx, const std::complex<float> *beta,
90 const std::complex<float> *y, const blas_int *incy);
91
92 double ddot_(const blas_int *n, const double *x, const blas_int *incx,
93 const double *y, const blas_int *incy);
94 float sdot_(const blas_int *n, const float *x, const blas_int *incx,
95 const float *y, const blas_int *incy);
96
97 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
98 std::complex<double> zdotc_(const blas_int *n, const std::complex<double> *x,
99 const blas_int *incx, const std::complex<double> *y, const blas_int *incy);
100 std::complex<double> zdotu_(const blas_int *n, const std::complex<double> *x,
101 const blas_int *incx, const std::complex<double> *y, const blas_int *incy);
102 std::complex<float> cdotc_(const blas_int *n, const std::complex<float> *x,
103 const blas_int *incx, const std::complex<float> *y, const blas_int *incy);
104 std::complex<float> cdotu_(const blas_int *n, const std::complex<float> *x,
105 const blas_int *incx, const std::complex<float> *y, const blas_int *incy);
106 #else
107 void zdotc_(std::complex<double>* res, const blas_int *n, const std::complex<double> *x,
108 const blas_int *incx, const std::complex<double> *y, const blas_int *incy);
109 void zdotu_(std::complex<double>* res, const blas_int *n, const std::complex<double> *x,
110 const blas_int *incx, const std::complex<double> *y, const blas_int *incy);
111 void cdotc_(std::complex<float>* res, const blas_int *n, const std::complex<float> *x,
112 const blas_int *incx, const std::complex<float> *y, const blas_int *incy);
113 void cdotu_(std::complex<float>* res, const blas_int *n, const std::complex<float> *x,
114 const blas_int *incx, const std::complex<float> *y, const blas_int *incy);
115 #endif
116
117 // D and Z LAPACK functions
118 /*
119 void dgeqp3_( const blas_int* m, const blas_int* n, double* a, const blas_int* lda,
120 int* jpvt, double* tau, double* work, int* lwork, blas_int* info );
121 void zgeqp3_( const blas_int* m, const blas_int* n, std::complex<double>* a, const blas_int* lda,
122 int* jpvt, std::complex<double>* tau, std::complex<double>* work,
123 int* lwork, double* rwork, blas_int* info );
124
125 //void dgeqpf_( const blas_int* m, const blas_int* n, double* a, const blas_int* lda,
126 // int* jpvt, double* tau, double* work, blas_int* info );
127 //void zgeqpf_( const blas_int* m, const blas_int* n, std::complex<double>* a, const blas_int* lda,
128 // int* jpvt, std::complex<double>* tau, std::complex<double>* work,
129 // double* rwork, blas_int* info );
130 //
131
132 void dgesvd_( const char* jobu, const char* jobvt, const blas_int* m,
133 const blas_int* n, double* a, const blas_int* lda, double* s,
134 double* u, const blas_int* ldu, double* vt, const blas_int* ldvt,
135 double* work, const blas_int* lwork, blas_int* info );
136
137 void sgesvd_( const char* jobu, const char* jobvt, const blas_int* m,
138 const blas_int* n, float* a, const blas_int* lda, float* s,
139 float* u, const blas_int* ldu, float* vt, const blas_int* ldvt,
140 float* work, const blas_int* lwork, blas_int* info );
141
142 void zgesvd_( const char* jobu, const char* jobvt, const blas_int* m,
143 const blas_int* n, std::complex<double>* a, const blas_int* lda, double* s,
144 std::complex<double>* u, const blas_int* ldu, std::complex<double>* vt, const blas_int* ldvt,
145 std::complex<double>* work, const blas_int* lwork, double* rwork, blas_int* info );
146
147 void cgesvd_( const char* jobu, const char* jobvt, const blas_int* m,
148 const blas_int* n, std::complex<float>* a, const blas_int* lda, float* s,
149 std::complex<float>* u, const blas_int* ldu, std::complex<float>* vt, const blas_int* ldvt,
150 std::complex<float>* work, const blas_int* lwork, float* rwork, blas_int* info );
151
152 void dgesdd_( const char* jobz, const blas_int* m, const blas_int* n, double* a,
153 const blas_int* lda, double* s, double* u, const blas_int* ldu, double* vt, const blas_int* ldvt,
154 double* work, const blas_int* lwork, blas_int* iwork, blas_int* info );
155 void zgesdd_( const char* jobz, const blas_int* m, const blas_int* n,
156 std::complex<double>* a, const blas_int* lda, double* s,
157 std::complex<double>* u, const blas_int* ldu,
158 std::complex<double>* vt, const blas_int* ldvt,
159 std::complex<double>* work, const blas_int* lwork,
160 double* rwork, blas_int* iwork, blas_int *info );
161
162 void ssyev_( const char* jobz, const char* uplo, const blas_int* n, float* a,
163 const blas_int* lda, float* w, float* work, const blas_int* lwork,
164 blas_int* info );
165 void dsyev_( const char* jobz, const char* uplo, const blas_int* n, double* a,
166 const blas_int* lda, double* w, double* work, const blas_int* lwork,
167 blas_int* info );
168 void cheev_( const char* jobz, const char* uplo, const blas_int* n, std::complex<float>* a,
169 const blas_int* lda, float* w, std::complex<float>* work, const blas_int* lwork,
170 const float* rwork, blas_int* info );
171
172 void zheev_( const char* jobz, const char* uplo, const blas_int* n, std::complex<double>* a,
173 const blas_int* lda, double* w, std::complex<double>* work, const blas_int* lwork,
174 const double* rwork, blas_int* info );
175
176
177 void zgeev_( const char* jobvl, const char* jobvr, const blas_int* n, std::complex<double>* a,
178 const blas_int* lda, std::complex<double>* w, std::complex<double> *vl, const blas_int *ldvl,
179 std::complex<double> *vr, const blas_int *ldvr, std::complex<double> *work, const blas_int* lwork,
180 double *rwork, blas_int* info );
181 void cgeev_( const char* jobvl, const char* jobvr, const blas_int* n, std::complex<float>* a,
182 const blas_int* lda, std::complex<float>* w, std::complex<float> *vl, const blas_int *ldvl,
183 std::complex<float> *vr, const blas_int *ldvr, std::complex<float> *work, const blas_int* lwork,
184 float *rwork, blas_int* info );
185 void dgeev_( const char* jobvl, const char* jobvr, const blas_int* n, double* a,
186 const blas_int* lda, double* wr, double *wl, double *vl, const blas_int *ldvl,
187 double *vr, const blas_int *ldvr, double *work, const blas_int* lwork,
188 blas_int* info );
189 void sgeev_( const char* jobvl, const char* jobvr, const blas_int* n, float* a,
190 const blas_int* lda, float* wr, float *wl, float *vl, const blas_int *ldvl,
191 float *vr, const blas_int *ldvr, float *work, const blas_int* lwork,
192 blas_int* info );
193
194 void sstev_( const char* jobz, const blas_int* n, const float* d, const float* e, const float* z,
195 const blas_int* ldaz, const float* work, blas_int* info );
196 void dstev_( const char* jobz, const blas_int* n, const double* d, const double* e, const double* z,
197 const blas_int* ldaz, const double* work, blas_int* info );
198
199 void dgetrf_( const blas_int *m, const blas_int *n, const double *a,
200 const blas_int *lda, const blas_int *ipiv, blas_int* info );
201 void sgetrf_( const blas_int *m, const blas_int *n, const float *a,
202 const blas_int *lda, const blas_int *ipiv, blas_int* info );
203
204 void zgetrf_( const blas_int *m, const blas_int *n, const std::complex<double> *a,
205 const blas_int *lda, const blas_int *ipiv, blas_int* info );
206 void cgetrf_( const blas_int *m, const blas_int *n, const std::complex<float> *a,
207 const blas_int *lda, const blas_int *ipiv, blas_int* info );
208
209 void dgetri_( const blas_int *n, const double *a, const blas_int *lda,
210 const blas_int *ipiv, const double* work, const blas_int* lwork, blas_int* info );
211 void sgetri_( const blas_int *n, const float *a, const blas_int *lda,
212 const blas_int *ipiv, const float* work, const blas_int* lwork, blas_int* info );
213 void cgetri_( const blas_int *n, const std::complex<float> *a, const blas_int *lda,
214 const blas_int *ipiv, const std::complex<float> *work, const blas_int *lwork, blas_int *info );
215 void zgetri_( const blas_int *n, const std::complex<double> *a, const blas_int *lda,
216 const blas_int *ipiv, const std::complex<double> *work, const blas_int *lwork, blas_int *info );
217 void sgelqf_( const blas_int* m, const blas_int* n, float* a,
218 const blas_int* lda, float* tau, float* work, const blas_int* lwork, blas_int* info );
219
220 void dgelqf_( const blas_int* m, const blas_int* n, double* a,
221 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info );
222 void zgelqf_( const blas_int* m, const blas_int* n, std::complex<double>* a,
223 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
224 void cgelqf_( const blas_int* m, const blas_int* n, std::complex<float>* a,
225 const blas_int* lda, std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info );
226
227 void dorglq_( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
228 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info );
229 void sorglq_( const blas_int* m, const blas_int* n, const blas_int* k, float* a,
230 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info );
231 void zunglq_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
232 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
233 void cunglq_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<float>* a,
234 const blas_int* lda, const std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info );
235 void dgeqlf_( const blas_int* m, const blas_int* n, double* a,
236 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info );
237 void zgeqlf_( const blas_int* m, const blas_int* n, std::complex<double>* a,
238 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
239
240 void dorgql_( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
241 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info );
242 void zungql_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
243 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
244
245 void dgeqrf_( const blas_int* m, const blas_int* n, double* a,
246 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info );
247 void sgeqrf_( const blas_int* m, const blas_int* n, float* a,
248 const blas_int* lda, float* tau, float* work, const blas_int* lwork, blas_int* info );
249 void zgeqrf_( const blas_int* m, const blas_int* n, std::complex<double>* a,
250 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
251 void cgeqrf_( const blas_int* m, const blas_int* n, std::complex<float>* a,
252 const blas_int* lda, std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info );
253 void dorgqr_( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
254 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info );
255 void sorgqr_( const blas_int* m, const blas_int* n, const blas_int* k, float* a,
256 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info );
257
258 void zungqr_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
259 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
260 void cungqr_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<float>* a,
261 const blas_int* lda, const std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info );
262 void dgerqf_( const blas_int* m, const blas_int* n, double* a,
263 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info );
264 void zgerqf_( const blas_int* m, const blas_int* n, std::complex<double>* a,
265 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
266
267 void dorgrq_( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
268 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info );
269 void sorgrq_( const blas_int* m, const blas_int* n, const blas_int* k, float* a,
270 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info );
271
272 void zungrq_( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
273 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info );
274
275 void dstemr_( const char *jobz, const char *range, const blas_int *N, double *D, double *E,const double *vl, const double *vu, const blas_int *il, const blas_int *iu, blas_int *M, double* W, double *Z, const blas_int *ldz, const blas_int *nzc, blas_int *isuppz, bool *tryrac, double*work, blas_int* lwork, blas_int*iwork, blas_int* liwork, blas_int* info);
276 */
277 }// extern C
278
279 // Wrappers for BLAS and LAPACK functions
280 inline void dgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
281 const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb,
282 const double *beta, double *c, const blas_int *ldc)
283 {
284 dgemm_(transa, transb, m, n, k,alpha, a, lda, b, ldb, beta, c, ldc);
285 }
286 inline void sgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
287 const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb,
288 const float *beta, float *c, const blas_int *ldc)
289 {
290 sgemm_(transa, transb, m, n, k,alpha, a, lda, b, ldb, beta, c, ldc);
291 }
292
293 inline void zgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
294 const std::complex<double> *alpha, const std::complex<double> *a, const blas_int *lda, const std::complex<double> *b, const blas_int *ldb,
295 const std::complex<double> *beta, std::complex<double> *c, const blas_int *ldc)
296 {
297 zgemm_(transa, transb, m, n, k, (const std::complex<double>*) alpha, (const std::complex<double>*)a, lda, (const std::complex<double>*)b, ldb,
298 (const std::complex<double>*)beta, (std::complex<double>*)c, ldc);
299 }
300
301 inline void cgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k,
302 const std::complex<float> *alpha, const std::complex<float> *a, const blas_int *lda, const std::complex<float> *b, const blas_int *ldb,
303 const std::complex<float> *beta, std::complex<float> *c, const blas_int *ldc)
304 {
305 cgemm_(transa, transb, m, n, k, (const std::complex<float>*) alpha, (const std::complex<float>*)a, lda, (const std::complex<float>*)b, ldb,
306 (const std::complex<float>*)beta, (std::complex<float>*)c, ldc);
307 }
308
309
310
311 inline double dasum(const blas_int *n, const double *x, const blas_int *incx)
312 {
313 return dasum_(n, x, incx);
314 }
315
316 inline void dcopy(const blas_int &n, const double *x, const blas_int &incx, double *y, const blas_int &incy)
317 {
318 dcopy_(&n, x, &incx, y, &incy);
319 }
320 inline void scopy(const blas_int &n, const float *x, const blas_int &incx, float *y, const blas_int &incy)
321 {
322 scopy_(&n, x, &incx, y, &incy);
323 }
324
325 inline void daxpy(const blas_int *n, const double *alpha, const double *x, const blas_int *incx, double *y, const blas_int *incy)
326 {
327 daxpy_(n, alpha, x, incx, y, incy);
328 }
329 inline void saxpy(const blas_int *n, const float *alpha, const float *x, const blas_int *incx, float *y, const blas_int *incy)
330 {
331 saxpy_(n, alpha, x, incx, y, incy);
332 }
333
334 inline void zaxpy(const blas_int *n, const std::complex<double> *alpha, const std::complex<double> *x, const blas_int *incx, std::complex<double> *y, const blas_int *incy)
335 {
336 zaxpy_(n, alpha, x, incx, y, incy);
337 }
338 inline void caxpy(const blas_int *n, const std::complex<float> *alpha, const std::complex<float> *x, const blas_int *incx, std::complex<float> *y, const blas_int *incy)
339 {
340 caxpy_(n, alpha, x, incx, y, incy);
341 }
342
343 inline double dnrm2(const blas_int *n, const double *x, const blas_int *incx)
344 {
345 return dnrm2_(n, x, incx);
346 }
347
348 inline double dznrm2(const blas_int *n, const std::complex<double> *x, const blas_int *incx)
349 {
350 return dznrm2_(n, x, incx);
351 }
352
353 inline float snrm2(const blas_int *n, const float *x, const blas_int *incx)
354 {
355 return snrm2_(n, x, incx);
356 }
357
358 inline float scnrm2(const blas_int *n, const std::complex<float> *x, const blas_int *incx)
359 {
360 return scnrm2_(n, x, incx);
361 }
362
363
364 inline void dscal(const blas_int *n, const double *a, double *x, const blas_int *incx)
365 {
366 dscal_(n, a, x, incx);
367 }
368 inline void sscal(const blas_int *n, const float *a, float *x, const blas_int *incx)
369 {
370 sscal_(n, a, x, incx);
371 }
372 inline void zscal(const blas_int *n, const std::complex<double> *a, std::complex<double> *x, const blas_int *incx)
373 {
374 zscal_(n, a, x, incx);
375 }
376 inline void cscal(const blas_int *n, const std::complex<float> *a, std::complex<float> *x, const blas_int *incx)
377 {
378 cscal_(n, a, x, incx);
379 }
380 inline void zdscal(const blas_int *n, const double *a, std::complex<double> *x, const blas_int *incx)
381 {
382 zdscal_(n, a, x, incx);
383 }
384 /*
385 inline void dsyev( const char* jobz, const char* uplo, const blas_int* n, double* a,
386 const blas_int* lda, double* w, double* work, const blas_int* lwork,
387 blas_int* info )
388 { dsyev_( jobz, uplo, n, a, lda, w, work, lwork, info ); }
389 inline void ssyev( const char* jobz, const char* uplo, const blas_int* n, float* a,
390 const blas_int* lda, float* w, float* work, const blas_int* lwork,
391 blas_int* info )
392 { ssyev_( jobz, uplo, n, a, lda, w, work, lwork, info ); }
393
394 inline void cheev( const char* jobz, const char* uplo, const blas_int* n, std::complex<float>* a,
395 const blas_int* lda, float* w, std::complex<float>* work, const blas_int* lwork,
396 const float* rwork, blas_int* info )
397 { cheev_( jobz, uplo, n, a, lda, w, work, lwork, rwork, info ); }
398
399 inline void zheev( const char* jobz, const char* uplo, const blas_int* n, std::complex<double>* a,
400 const blas_int* lda, double* w, std::complex<double>* work, const blas_int* lwork,
401 const double* rwork, blas_int* info )
402 { zheev_( jobz, uplo, n, a, lda, w, work, lwork, rwork, info ); }
403
404 inline void zgeev( const char* jobvl, const char* jobvr, const blas_int* n, std::complex<double>* a,
405 const blas_int* lda, std::complex<double>* w, std::complex<double> *vl, const blas_int *ldvl,
406 std::complex<double> *vr, const blas_int *ldvr, std::complex<double> *work, const blas_int* lwork,
407 double *rwork, blas_int* info )
408 {
409 zgeev_(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info);
410 }
411
412 inline void cgeev( const char* jobvl, const char* jobvr, const blas_int* n, std::complex<float>* a,
413 const blas_int* lda, std::complex<float>* w, std::complex<float> *vl, const blas_int *ldvl,
414 std::complex<float> *vr, const blas_int *ldvr, std::complex<float> *work, const blas_int* lwork,
415 float *rwork, blas_int* info )
416 {
417 cgeev_(jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info);
418 }
419
420
421
422 inline void dgesvd( const char* jobu, const char* jobvt, const blas_int* m,
423 const blas_int* n, double* a, const blas_int* lda, double* s,
424 double* u, const blas_int* ldu, double* vt, const blas_int* ldvt,
425 double* work, const blas_int* lwork, blas_int* info )
426 {
427 dgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info );
428 }
429
430 inline void sgesvd( const char* jobu, const char* jobvt, const blas_int* m,
431 const blas_int* n, float* a, const blas_int* lda, float* s,
432 float* u, const blas_int* ldu, float* vt, const blas_int* ldvt,
433 float* work, const blas_int* lwork, blas_int* info )
434 {
435 sgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info );
436 }
437
438 inline void zgesvd( const char* jobu, const char* jobvt, const blas_int* m,
439 const blas_int* n, std::complex<double>* a, const blas_int* lda, double* s,
440 std::complex<double>* u, const blas_int* ldu, std::complex<double>* vt, const blas_int* ldvt,
441 std::complex<double>* work, const blas_int* lwork, double* rwork, blas_int* info )
442 {
443 zgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info );
444 }
445
446 inline void cgesvd( const char* jobu, const char* jobvt, const blas_int* m,
447 const blas_int* n, std::complex<float>* a, const blas_int* lda, float* s,
448 std::complex<float>* u, const blas_int* ldu, std::complex<float>* vt, const blas_int* ldvt,
449 std::complex<float>* work, const blas_int* lwork, float* rwork, blas_int* info )
450 {
451 cgesvd_( jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info );
452 }
453
454
455 inline void dgesdd( const char* jobz, const blas_int* m, const blas_int* n, double* a,
456 const blas_int* lda, double* s, double* u, const blas_int* ldu, double* vt, const blas_int* ldvt,
457 double* work, const blas_int* lwork, blas_int* iwork, blas_int* info )
458 {
459 dgesdd_(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork, info);
460 }
461
462 inline void zgesdd( const char* jobz, const blas_int* m, const blas_int* n,
463 std::complex<double>* a, const blas_int* lda, double* s,
464 std::complex<double>* u, const blas_int* ldu,
465 std::complex<double>* vt, const blas_int* ldvt,
466 std::complex<double>* work, const blas_int* lwork,
467 double* rwork, blas_int* iwork, blas_int *info )
468 {
469 zgesdd_(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info);
470 }
471 */
472
473 inline void sgemv(const char *trans, const blas_int *m, const blas_int *n, const float *alpha, const float *a, const blas_int *lda, const float *x,
474 const blas_int *incx, const float *beta, const float *y, const blas_int *incy)
475 {
476 sgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
477 }
478 inline void dgemv(const char *trans, const blas_int *m, const blas_int *n, const double *alpha, const double *a, const blas_int *lda, const double *x,
479 const blas_int *incx, const double *beta, const double *y, const blas_int *incy)
480 {
481 dgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
482 }
483 inline void zgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex<double> *alpha, const std::complex<double> *a, const blas_int *lda,
484 const std::complex<double> *x,const blas_int *incx, const std::complex<double> *beta, const std::complex<double> *y, const blas_int *incy)
485 {
486 zgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
487 }
488 inline void cgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex<float> *alpha, const std::complex<float> *a, const blas_int *lda,
489 const std::complex<float> *x,const blas_int *incx, const std::complex<float> *beta, const std::complex<float> *y, const blas_int *incy)
490 {
491 cgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
492 }
493
494 inline double ddot( const blas_int *n, const double *x, const blas_int *incx, const double *y, const blas_int *incy)
495 {
496 return ddot_(n, x, incx, y, incy);
497 }
498 inline float sdot( const blas_int *n, const float *x, const blas_int *incx, const float *y, const blas_int *incy)
499 {
500 return sdot_(n, x, incx, y, incy);
501 }
502
503 inline void zdotc(std::complex<double> *res, const blas_int *n, const std::complex<double> *x, const blas_int *incx, const std::complex<double> *y, const blas_int *incy)
504 {
505 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
506 *res = zdotc_(n, x, incx, y, incy);
507 #else
508 zdotc_(res,n, x, incx, y, incy);
509 #endif
510 }
511 inline void zdotu(std::complex<double> *res, const blas_int *n, const std::complex<double> *x, const blas_int *incx, const std::complex<double> *y, const blas_int *incy)
512 {
513 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
514 *res = zdotu_(n, x, incx, y, incy);
515 #else
516 zdotu_(res,n, x, incx, y, incy);
517 #endif
518 }
519 inline void cdotc(std::complex<float> *res, const blas_int *n, const std::complex<float> *x, const blas_int *incx, const std::complex<float> *y, const blas_int *incy)
520 {
521 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
522 *res = cdotc_(n, x, incx, y, incy);
523 #else
524 cdotc_(res,n, x, incx, y, incy);
525 #endif
526 }
527 inline void cdotu(std::complex<float> *res, const blas_int *n, const std::complex<float> *x, const blas_int *incx, const std::complex<float> *y, const blas_int *incy)
528 {
529 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
530 *res = cdotu_(n, x, incx, y, incy);
531 #else
532 cdotu_(res,n, x, incx, y, incy);
533 #endif
534 }
535
536
537 /*
538 inline void dstev( const char* jobz, const blas_int* n, const double* d, const double* e, const double* z,
539 const blas_int* ldaz, const double* work, blas_int* info )
540 {
541 dstev_( jobz, n, d, e, z, ldaz, work, info );
542 }
543
544 inline void sstev( const char* jobz, const blas_int* n, const float* d, const float* e, const float* z,
545 const blas_int* ldaz, const float* work, blas_int* info )
546 {
547 sstev_( jobz, n, d, e, z, ldaz, work, info );
548 }
549
550 inline void dgetrf( const blas_int *m, const blas_int *n, const double *a, const blas_int *lda, const blas_int *ipiv, blas_int* info )
551 {
552 dgetrf_( m, n, a, lda, ipiv, info );
553 }
554 inline void sgetrf( const blas_int *m, const blas_int *n, const float *a, const blas_int *lda, const blas_int *ipiv, blas_int* info )
555 {
556 sgetrf_( m, n, a, lda, ipiv, info );
557 }
558
559 inline void zgetrf( const blas_int *m, const blas_int *n, const std::complex<double> *a, const blas_int *lda, const blas_int *ipiv, blas_int* info )
560 {
561 zgetrf_(m, n, a, lda, ipiv, info);
562 }
563 inline void cgetrf( const blas_int *m, const blas_int *n, const std::complex<float> *a, const blas_int *lda, const blas_int *ipiv, blas_int* info )
564 {
565 cgetrf_(m, n, a, lda, ipiv, info);
566 }
567
568 inline void dgetri( const blas_int *n, const double *a, const blas_int *lda, const blas_int *ipiv, const double* work, const blas_int* lwork, blas_int* info )
569 {
570 dgetri_(n, a, lda, ipiv, work, lwork, info);
571 }
572 inline void sgetri( const blas_int *n, const float *a, const blas_int *lda, const blas_int *ipiv, const float* work, const blas_int* lwork, blas_int* info )
573 {
574 sgetri_(n, a, lda, ipiv, work, lwork, info);
575 }
576 inline void zgetri( const blas_int *n, const std::complex<double> *a, const blas_int *lda, const blas_int *ipiv, const std::complex<double> *work, const blas_int *lwork, blas_int *info )
577 {
578 zgetri_(n, a, lda, ipiv, work, lwork, info);
579 }
580 inline void cgetri( const blas_int *n, const std::complex<float> *a, const blas_int *lda, const blas_int *ipiv, const std::complex<float> *work, const blas_int *lwork, blas_int *info )
581 {
582 cgetri_(n, a, lda, ipiv, work, lwork, info);
583 }
584
585 //inline void dgeqpf( const blas_int* m, const blas_int* n, double* a, const blas_int* lda, int* jpvt, double* tau, double* work, blas_int* info ){
586 //
587 //dgeqpf_(m, n, a, lda, jpvt, tau, work, info);
588 //
589 //}
590
591
592 inline void dgeqp3( const blas_int* m, const blas_int* n, double* a, const blas_int* lda, int* jpvt, double* tau, double* work, int* lwork, blas_int* info ){
593
594 dgeqp3_(m, n, a, lda, jpvt, tau, work, lwork,info);
595
596 }
597
598 inline void dgelqf( const blas_int* m, const blas_int* n, double* a,
599 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info )
600 {
601 dgelqf_(m, n, a, lda, tau, work, lwork, info );
602 }
603 inline void sgelqf( const blas_int* m, const blas_int* n, float* a,
604 const blas_int* lda, float* tau, float* work, const blas_int* lwork, blas_int* info )
605 {
606 sgelqf_(m, n, a, lda, tau, work, lwork, info );
607 }
608 inline void dorglq( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
609 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info )
610 {
611 dorglq_(m, n, k, a, lda, tau, work, lwork, info );
612 }
613 inline void sorglq( const blas_int* m, const blas_int* n, const blas_int* k, float* a,
614 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info )
615 {
616 sorglq_(m, n, k, a, lda, tau, work, lwork, info );
617 }
618
619
620
621 inline void dgeqlf( const blas_int* m, const blas_int* n, double* a,
622 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info )
623 {
624 dgeqlf_(m, n, a, lda, tau, work, lwork, info );
625 }
626
627 inline void dorgql( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
628 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info )
629 {
630 dorgql_(m, n, k, a, lda, tau, work, lwork, info );
631 }
632
633 inline void dgeqrf( const blas_int* m, const blas_int* n, double* a,
634 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info )
635 {
636 dgeqrf_(m, n, a, lda, tau, work, lwork, info );
637 }
638 inline void sgeqrf( const blas_int* m, const blas_int* n, float* a,
639 const blas_int* lda, float* tau, float* work, const blas_int* lwork, blas_int* info )
640 {
641 sgeqrf_(m, n, a, lda, tau, work, lwork, info );
642 }
643 inline void dorgqr( const blas_int* m, const blas_int* n, const blas_int* k, double* a,
644 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info )
645 {
646 dorgqr_(m, n, k, a, lda, tau, work, lwork, info );
647 }
648 inline void sorgqr( const blas_int* m, const blas_int* n, const blas_int* k, float* a,
649 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info )
650 {
651 sorgqr_(m, n, k, a, lda, tau, work, lwork, info );
652 }
653
654 inline void dgerqf( const blas_int* m, const blas_int* n, double* a,
655 const blas_int* lda, double* tau, double* work, const blas_int* lwork, blas_int* info )
656 {
657 dgerqf_(m, n, a, lda, tau, work, lwork, info );
658 }
659
660 inline void dorgrq(const blas_int* m, const blas_int* n, const blas_int* k, double* a,
661 const blas_int* lda, const double* tau, double* work, const blas_int* lwork, blas_int* info )
662 {
663 dorgrq_(m, n, k, a, lda, tau, work, lwork, info );
664 }
665 inline void sorgrq(const blas_int* m, const blas_int* n, const blas_int* k, float* a,
666 const blas_int* lda, const float* tau, float* work, const blas_int* lwork, blas_int* info )
667 {
668 sorgrq_(m, n, k, a, lda, tau, work, lwork, info );
669 }
670 inline void zgeqrf( const blas_int* m, const blas_int* n, std::complex<double>* a,
671 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
672 {
673 zgeqrf_(m, n, a, lda, tau, work, lwork, info );
674 }
675 inline void cgeqrf( const blas_int* m, const blas_int* n, std::complex<float>* a,
676 const blas_int* lda, std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info )
677 {
678 cgeqrf_(m, n, a, lda, tau, work, lwork, info );
679 }
680 inline void zungqr( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
681 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
682 {
683 zungqr_(m, n, k, a, lda, tau, work, lwork, info );
684 }
685 inline void cungqr( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<float>* a,
686 const blas_int* lda, const std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info )
687 {
688 cungqr_(m, n, k, a, lda, tau, work, lwork, info );
689 }
690
691 inline void zgerqf( const blas_int* m, const blas_int* n, std::complex<double>* a,
692 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
693 {
694 zgerqf_(m, n, a, lda, tau, work, lwork, info );
695 }
696
697 inline void zungrq( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
698 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
699 {
700 zungrq_(m, n, k, a, lda, tau, work, lwork, info );
701 }
702
703 inline void zgeqp3( const blas_int* m, const blas_int* n, std::complex<double>* a, const blas_int* lda,
704 int* jpvt, std::complex<double>* tau, std::complex<double>* work,
705 int* lwork, double* rwork, blas_int* info ){
706 zgeqp3_(m, n, a, lda, jpvt, tau, work, lwork,rwork, info);
707 }
708
709 //inline void zgeqpf( const blas_int* m, const blas_int* n, std::complex<double>* a, const blas_int* lda,
710 // int* jpvt, std::complex<double>* tau, std::complex<double>* work,
711 // double* rwork, blas_int* info ){
712 // zgeqpf_(m, n, a, lda, jpvt, tau, work, rwork, info);
713 //}
714
715 inline void zgelqf( const blas_int* m, const blas_int* n, std::complex<double>* a,
716 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
717 {
718 zgelqf_(m, n, a, lda, tau, work, lwork, info );
719 }
720 inline void cgelqf( const blas_int* m, const blas_int* n, std::complex<float>* a,
721 const blas_int* lda, std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info )
722 {
723 cgelqf_(m, n, a, lda, tau, work, lwork, info );
724 }
725
726 inline void zunglq( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
727 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
728 {
729 zunglq_(m, n, k, a, lda, tau, work, lwork, info );
730 }
731 inline void cunglq( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<float>* a,
732 const blas_int* lda, const std::complex<float>* tau, std::complex<float>* work, const blas_int* lwork, blas_int* info )
733 {
734 cunglq_(m, n, k, a, lda, tau, work, lwork, info );
735 }
736 inline void zgeqlf( const blas_int* m, const blas_int* n, std::complex<double>* a,
737 const blas_int* lda, std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
738 {
739 zgeqlf_(m, n, a, lda, tau, work, lwork, info );
740 }
741
742 inline void zungql( const blas_int* m, const blas_int* n, const blas_int* k, std::complex<double>* a,
743 const blas_int* lda, const std::complex<double>* tau, std::complex<double>* work, const blas_int* lwork, blas_int* info )
744 {
745 zungql_(m, n, k, a, lda, tau, work, lwork, info );
746 }
747 */
748#endif //UNI_MKL
749
750
751#endif
float snrm2_(const blas_int *n, const float *x, const blas_int *incx)
void dgemv_(const char *trans, const blas_int *m, const blas_int *n, const double *alpha, const double *a, const blas_int *lda, const double *x, const blas_int *incx, const double *beta, const double *y, const blas_int *incy)
void scopy_(const blas_int *n, const float *x, const blas_int *incx, float *y, const blas_int *incy)
float scnrm2(const blas_int *n, const std::complex< float > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:358
void cdotu(std::complex< float > *res, const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:527
void cgemv_(const char *trans, const blas_int *m, const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *beta, const std::complex< float > *y, const blas_int *incy)
double dznrm2(const blas_int *n, const std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:348
void zscal(const blas_int *n, const std::complex< double > *a, std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:372
std::complex< double > zdotc_(const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
double dznrm2_(const blas_int *n, const std::complex< double > *x, const blas_int *incx)
void cscal(const blas_int *n, const std::complex< float > *a, std::complex< float > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:376
void zgemv_(const char *trans, const blas_int *m, const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *beta, const std::complex< double > *y, const blas_int *incy)
float scnrm2_(const blas_int *n, const std::complex< float > *x, const blas_int *incx)
std::complex< float > cdotc_(const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
double dnrm2_(const blas_int *n, const double *x, const blas_int *incx)
double ddot(const blas_int *n, const double *x, const blas_int *incx, const double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:494
void daxpy(const blas_int *n, const double *alpha, const double *x, const blas_int *incx, double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:325
void daxpy_(const blas_int *n, const double *alpha, const double *x, const blas_int *incx, double *y, const blas_int *incy)
void cgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *beta, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:488
void zdotc(std::complex< double > *res, const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:503
void cgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *b, const blas_int *ldb, const std::complex< float > *beta, std::complex< float > *c, const blas_int *ldc)
void sgemv_(const char *trans, const blas_int *m, const blas_int *n, const float *alpha, const float *a, const blas_int *lda, const float *x, const blas_int *incx, const float *beta, const float *y, const blas_int *incy)
void sgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb, const float *beta, float *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:286
void zdscal(const blas_int *n, const double *a, std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:380
void caxpy_(const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *x, const blas_int *incx, std::complex< float > *y, const blas_int *incy)
double dnrm2(const blas_int *n, const double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:343
void zgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *beta, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:483
void cscal_(const blas_int *n, const std::complex< float > *a, std::complex< float > *x, const blas_int *incx)
double dasum(const blas_int *n, const double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:311
void saxpy_(const blas_int *n, const float *alpha, const float *x, const blas_int *incx, float *y, const blas_int *incy)
std::complex< float > cdotu_(const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
void zgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *b, const blas_int *ldb, const std::complex< double > *beta, std::complex< double > *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:293
void zgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *b, const blas_int *ldb, const std::complex< double > *beta, std::complex< double > *c, const blas_int *ldc)
void sscal_(const blas_int *n, const float *a, float *x, const blas_int *incx)
void sgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb, const float *beta, float *c, const blas_int *ldc)
void dgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb, const double *beta, double *c, const blas_int *ldc)
void saxpy(const blas_int *n, const float *alpha, const float *x, const blas_int *incx, float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:329
int32_t blas_int
Definition lapack_wrapper.hpp:21
void dgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb, const double *beta, double *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:280
void zdotu(std::complex< double > *res, const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:511
void dgemv(const char *trans, const blas_int *m, const blas_int *n, const double *alpha, const double *a, const blas_int *lda, const double *x, const blas_int *incx, const double *beta, const double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:478
void dcopy(const blas_int &n, const double *x, const blas_int &incx, double *y, const blas_int &incy)
Definition lapack_wrapper.hpp:316
void sgemv(const char *trans, const blas_int *m, const blas_int *n, const float *alpha, const float *a, const blas_int *lda, const float *x, const blas_int *incx, const float *beta, const float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:473
void scopy(const blas_int &n, const float *x, const blas_int &incx, float *y, const blas_int &incy)
Definition lapack_wrapper.hpp:320
float sdot_(const blas_int *n, const float *x, const blas_int *incx, const float *y, const blas_int *incy)
double dasum_(const blas_int *n, const double *x, const blas_int *incx)
void zdscal_(const blas_int *n, const double *a, std::complex< double > *x, const blas_int *incx)
void dcopy_(const blas_int *n, const double *x, const blas_int *incx, double *y, const blas_int *incy)
double ddot_(const blas_int *n, const double *x, const blas_int *incx, const double *y, const blas_int *incy)
void sscal(const blas_int *n, const float *a, float *x, const blas_int *incx)
Definition lapack_wrapper.hpp:368
void dscal(const blas_int *n, const double *a, double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:364
void zscal_(const blas_int *n, const std::complex< double > *a, std::complex< double > *x, const blas_int *incx)
float sdot(const blas_int *n, const float *x, const blas_int *incx, const float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:498
void zaxpy_(const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *x, const blas_int *incx, std::complex< double > *y, const blas_int *incy)
float snrm2(const blas_int *n, const float *x, const blas_int *incx)
Definition lapack_wrapper.hpp:353
void zaxpy(const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *x, const blas_int *incx, std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:334
std::complex< double > zdotu_(const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
void cdotc(std::complex< float > *res, const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:519
void caxpy(const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *x, const blas_int *incx, std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:338
void dscal_(const blas_int *n, const double *a, double *x, const blas_int *incx)
void cgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *b, const blas_int *ldb, const std::complex< float > *beta, std::complex< float > *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:301