1#ifndef __LAPACK_WRAPPER_H__
2#define __LAPACK_WRAPPER_H__
28 const blas_int *k,
const double *alpha,
const double *a,
const blas_int *lda,
29 const double *b,
const blas_int *ldb,
const double *beta,
double *c,
33 const float *b,
const blas_int *ldb,
const float *beta,
float *c,
const blas_int *ldc);
35 const blas_int *k,
const std::complex<double> *alpha,
const std::complex<double> *a,
37 const std::complex<double> *beta, std::complex<double> *c,
const blas_int *ldc);
39 const blas_int *k,
const std::complex<float> *alpha,
const std::complex<float> *a,
41 const std::complex<float> *beta, std::complex<float> *c,
const blas_int *ldc);
62void zaxpy_(
const blas_int *n,
const std::complex<double> *alpha,
const std::complex<double> *x,
64void caxpy_(
const blas_int *n,
const std::complex<float> *alpha,
const std::complex<float> *x,
68void zscal_(
const blas_int *n,
const std::complex<double> *a, std::complex<double> *x,
70void cscal_(
const blas_int *n,
const std::complex<float> *a, std::complex<float> *x,
81 const float *beta,
const float *y,
const blas_int *incy);
85 const double *beta,
const double *y,
const blas_int *incy);
88 const std::complex<double> *alpha,
const std::complex<double> *a,
const blas_int *lda,
89 const std::complex<double> *x,
const blas_int *incx,
const std::complex<double> *beta,
90 const std::complex<double> *y,
const blas_int *incy);
93 const std::complex<float> *alpha,
const std::complex<float> *a,
const blas_int *lda,
94 const std::complex<float> *x,
const blas_int *incx,
const std::complex<float> *beta,
95 const std::complex<float> *y,
const blas_int *incy);
102 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
104 const std::complex<double> *y,
const blas_int *incy);
106 const std::complex<double> *y,
const blas_int *incy);
108 const std::complex<float> *y,
const blas_int *incy);
110 const std::complex<float> *y,
const blas_int *incy);
112void zdotc_(std::complex<double> *res,
const blas_int *n,
const std::complex<double> *x,
114void zdotu_(std::complex<double> *res,
const blas_int *n,
const std::complex<double> *x,
116void cdotc_(std::complex<float> *res,
const blas_int *n,
const std::complex<float> *x,
118void cdotu_(std::complex<float> *res,
const blas_int *n,
const std::complex<float> *x,
287 const blas_int *k,
const double *alpha,
const double *a,
const blas_int *lda,
288 const double *b,
const blas_int *ldb,
const double *beta,
double *c,
290 dgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
294 const float *b,
const blas_int *ldb,
const float *beta,
float *c,
296 sgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
300 const blas_int *k,
const std::complex<double> *alpha,
301 const std::complex<double> *a,
const blas_int *lda,
const std::complex<double> *b,
302 const blas_int *ldb,
const std::complex<double> *beta, std::complex<double> *c,
304 zgemm_(transa, transb, m, n, k, (
const std::complex<double> *)alpha,
305 (
const std::complex<double> *)a, lda, (
const std::complex<double> *)b, ldb,
306 (
const std::complex<double> *)beta, (std::complex<double> *)c, ldc);
310 const blas_int *k,
const std::complex<float> *alpha,
const std::complex<float> *a,
312 const std::complex<float> *beta, std::complex<float> *c,
const blas_int *ldc) {
313 cgemm_(transa, transb, m, n, k, (
const std::complex<float> *)alpha,
314 (
const std::complex<float> *)a, lda, (
const std::complex<float> *)b, ldb,
315 (
const std::complex<float> *)beta, (std::complex<float> *)c, ldc);
319 return dasum_(n, x, incx);
324 dcopy_(&n, x, &incx, y, &incy);
328 scopy_(&n, x, &incx, y, &incy);
333 daxpy_(n, alpha, x, incx, y, incy);
337 saxpy_(n, alpha, x, incx, y, incy);
341 const std::complex<double> *x,
const blas_int *incx, std::complex<double> *y,
343 zaxpy_(n, alpha, x, incx, y, incy);
345inline void caxpy(
const blas_int *n,
const std::complex<float> *alpha,
const std::complex<float> *x,
347 caxpy_(n, alpha, x, incx, y, incy);
351 return dnrm2_(n, x, incx);
359 return snrm2_(n, x, incx);
372inline void zscal(
const blas_int *n,
const std::complex<double> *a, std::complex<double> *x,
376inline void cscal(
const blas_int *n,
const std::complex<float> *a, std::complex<float> *x,
475 const float *beta,
const float *y,
const blas_int *incy) {
476 sgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
479 const double *a,
const blas_int *lda,
const double *x,
const blas_int *incx,
480 const double *beta,
const double *y,
const blas_int *incy) {
481 dgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
484 const std::complex<double> *alpha,
const std::complex<double> *a,
486 const std::complex<double> *beta,
const std::complex<double> *y,
488 zgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
491 const std::complex<float> *alpha,
const std::complex<float> *a,
493 const std::complex<float> *beta,
const std::complex<float> *y,
495 cgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
500 return ddot_(n, x, incx, y, incy);
504 return sdot_(n, x, incx, y, incy);
507inline void zdotc(std::complex<double> *res,
const blas_int *n,
const std::complex<double> *x,
508 const blas_int *incx,
const std::complex<double> *y,
const blas_int *incy) {
509 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
510 *res =
zdotc_(n, x, incx, y, incy);
512 zdotc_(res, n, x, incx, y, incy);
515inline void zdotu(std::complex<double> *res,
const blas_int *n,
const std::complex<double> *x,
516 const blas_int *incx,
const std::complex<double> *y,
const blas_int *incy) {
517 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
518 *res =
zdotu_(n, x, incx, y, incy);
520 zdotu_(res, n, x, incx, y, incy);
523inline void cdotc(std::complex<float> *res,
const blas_int *n,
const std::complex<float> *x,
525 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
526 *res =
cdotc_(n, x, incx, y, incy);
528 cdotc_(res, n, x, incx, y, incy);
531inline void cdotu(std::complex<float> *res,
const blas_int *n,
const std::complex<float> *x,
533 #ifndef FORTRAN_COMPLEX_FUNCTIONS_RETURN_VOID
534 *res =
cdotu_(n, x, incx, y, incy);
536 cdotu_(res, n, x, incx, y, incy);
float snrm2_(const blas_int *n, const float *x, const blas_int *incx)
void dgemv_(const char *trans, const blas_int *m, const blas_int *n, const double *alpha, const double *a, const blas_int *lda, const double *x, const blas_int *incx, const double *beta, const double *y, const blas_int *incy)
void scopy_(const blas_int *n, const float *x, const blas_int *incx, float *y, const blas_int *incy)
float scnrm2(const blas_int *n, const std::complex< float > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:362
void cdotu(std::complex< float > *res, const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:531
void cgemv_(const char *trans, const blas_int *m, const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *beta, const std::complex< float > *y, const blas_int *incy)
double dznrm2(const blas_int *n, const std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:354
void zscal(const blas_int *n, const std::complex< double > *a, std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:372
std::complex< double > zdotc_(const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
double dznrm2_(const blas_int *n, const std::complex< double > *x, const blas_int *incx)
void cscal(const blas_int *n, const std::complex< float > *a, std::complex< float > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:376
void zgemv_(const char *trans, const blas_int *m, const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *beta, const std::complex< double > *y, const blas_int *incy)
float scnrm2_(const blas_int *n, const std::complex< float > *x, const blas_int *incx)
std::complex< float > cdotc_(const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
double dnrm2_(const blas_int *n, const double *x, const blas_int *incx)
double ddot(const blas_int *n, const double *x, const blas_int *incx, const double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:498
void daxpy(const blas_int *n, const double *alpha, const double *x, const blas_int *incx, double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:331
void daxpy_(const blas_int *n, const double *alpha, const double *x, const blas_int *incx, double *y, const blas_int *incy)
void cgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *beta, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:490
void zdotc(std::complex< double > *res, const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:507
void cgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *b, const blas_int *ldb, const std::complex< float > *beta, std::complex< float > *c, const blas_int *ldc)
void sgemv_(const char *trans, const blas_int *m, const blas_int *n, const float *alpha, const float *a, const blas_int *lda, const float *x, const blas_int *incx, const float *beta, const float *y, const blas_int *incy)
void sgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb, const float *beta, float *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:292
void zdscal(const blas_int *n, const double *a, std::complex< double > *x, const blas_int *incx)
Definition lapack_wrapper.hpp:380
void caxpy_(const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *x, const blas_int *incx, std::complex< float > *y, const blas_int *incy)
double dnrm2(const blas_int *n, const double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:350
void zgemv(const char *trans, const blas_int *m, const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *beta, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:483
void cscal_(const blas_int *n, const std::complex< float > *a, std::complex< float > *x, const blas_int *incx)
double dasum(const blas_int *n, const double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:318
void saxpy_(const blas_int *n, const float *alpha, const float *x, const blas_int *incx, float *y, const blas_int *incy)
std::complex< float > cdotu_(const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
void zgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *b, const blas_int *ldb, const std::complex< double > *beta, std::complex< double > *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:299
void zgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< double > *alpha, const std::complex< double > *a, const blas_int *lda, const std::complex< double > *b, const blas_int *ldb, const std::complex< double > *beta, std::complex< double > *c, const blas_int *ldc)
void sscal_(const blas_int *n, const float *a, float *x, const blas_int *incx)
void sgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const float *alpha, const float *a, const blas_int *lda, const float *b, const blas_int *ldb, const float *beta, float *c, const blas_int *ldc)
void dgemm_(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb, const double *beta, double *c, const blas_int *ldc)
void saxpy(const blas_int *n, const float *alpha, const float *x, const blas_int *incx, float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:335
int32_t blas_int
Definition lapack_wrapper.hpp:20
void dgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const double *alpha, const double *a, const blas_int *lda, const double *b, const blas_int *ldb, const double *beta, double *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:286
void zdotu(std::complex< double > *res, const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:515
void dgemv(const char *trans, const blas_int *m, const blas_int *n, const double *alpha, const double *a, const blas_int *lda, const double *x, const blas_int *incx, const double *beta, const double *y, const blas_int *incy)
Definition lapack_wrapper.hpp:478
void dcopy(const blas_int &n, const double *x, const blas_int &incx, double *y, const blas_int &incy)
Definition lapack_wrapper.hpp:322
void sgemv(const char *trans, const blas_int *m, const blas_int *n, const float *alpha, const float *a, const blas_int *lda, const float *x, const blas_int *incx, const float *beta, const float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:473
void scopy(const blas_int &n, const float *x, const blas_int &incx, float *y, const blas_int &incy)
Definition lapack_wrapper.hpp:326
float sdot_(const blas_int *n, const float *x, const blas_int *incx, const float *y, const blas_int *incy)
double dasum_(const blas_int *n, const double *x, const blas_int *incx)
void zdscal_(const blas_int *n, const double *a, std::complex< double > *x, const blas_int *incx)
void dcopy_(const blas_int *n, const double *x, const blas_int *incx, double *y, const blas_int *incy)
double ddot_(const blas_int *n, const double *x, const blas_int *incx, const double *y, const blas_int *incy)
void sscal(const blas_int *n, const float *a, float *x, const blas_int *incx)
Definition lapack_wrapper.hpp:369
void dscal(const blas_int *n, const double *a, double *x, const blas_int *incx)
Definition lapack_wrapper.hpp:366
void zscal_(const blas_int *n, const std::complex< double > *a, std::complex< double > *x, const blas_int *incx)
float sdot(const blas_int *n, const float *x, const blas_int *incx, const float *y, const blas_int *incy)
Definition lapack_wrapper.hpp:502
void zaxpy_(const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *x, const blas_int *incx, std::complex< double > *y, const blas_int *incy)
float snrm2(const blas_int *n, const float *x, const blas_int *incx)
Definition lapack_wrapper.hpp:358
void zaxpy(const blas_int *n, const std::complex< double > *alpha, const std::complex< double > *x, const blas_int *incx, std::complex< double > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:340
std::complex< double > zdotu_(const blas_int *n, const std::complex< double > *x, const blas_int *incx, const std::complex< double > *y, const blas_int *incy)
void cdotc(std::complex< float > *res, const blas_int *n, const std::complex< float > *x, const blas_int *incx, const std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:523
void caxpy(const blas_int *n, const std::complex< float > *alpha, const std::complex< float > *x, const blas_int *incx, std::complex< float > *y, const blas_int *incy)
Definition lapack_wrapper.hpp:345
void dscal_(const blas_int *n, const double *a, double *x, const blas_int *incx)
void cgemm(const char *transa, const char *transb, const blas_int *m, const blas_int *n, const blas_int *k, const std::complex< float > *alpha, const std::complex< float > *a, const blas_int *lda, const std::complex< float > *b, const blas_int *ldb, const std::complex< float > *beta, std::complex< float > *c, const blas_int *ldc)
Definition lapack_wrapper.hpp:309