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