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