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