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