25#ifndef HAVE_LIBMKL_INTEL_LP64
26#ifndef CBLAS_ENUM_DEFINED_H
27 #define CBLAS_ENUM_DEFINED_H
28 enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102 };
29 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113,
31 enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
32 enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
33 enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
35#define CBLAS_INDEX int
39 #define ATLAS_ORDER CBLAS_ORDER
40 #define AtlasRowMajor CblasRowMajor
41 #define AtlasColMajor CblasColMajor
42 #define ATLAS_TRANS CBLAS_TRANSPOSE
43 #define AtlasNoTrans CblasNoTrans
44 #define AtlasTrans CblasTrans
45 #define AtlasConjTrans CblasConjTrans
46 #define ATLAS_UPLO CBLAS_UPLO
47 #define AtlasUpper CblasUpper
48 #define AtlasLower CblasLower
49 #define ATLAS_DIAG CBLAS_DIAG
50 #define AtlasNonUnit CblasNonUnit
51 #define AtlasUnit CblasUnit
52 #define ATLAS_SIDE CBLAS_SIDE
53 #define AtlasLeft CblasLeft
54 #define AtlasRight CblasRight
62using doublecomplex = std::complex<double>;
64#if defined(HAVE_LIBBLAS)
66 void dscal(
int N,
double alpha,
double *X,
int incX) ;
67 void dgemm(CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA,
68 CBLAS_TRANSPOSE TransB,
int M,
int N,
69 int K,
double alpha,
const double *A,
70 int lda,
const double *B,
int ldb,
71 double beta,
double *C,
int ldc);
72 void dsymm(CBLAS_ORDER Order, CBLAS_SIDE Side,
73 CBLAS_UPLO Uplo,
int M,
int N,
74 double alpha,
const double *A,
int lda,
75 const double *B,
int ldb,
double beta,
77 void daxpy(
int N,
double alpha,
const double *X,
78 int incX,
double *Y,
int incY);
79 void dcopy(
int N,
const double *X,
int incX,
81 void dgemv(CBLAS_ORDER Order,
82 CBLAS_TRANSPOSE TransA,
int M,
int N,
83 double alpha,
const double *A,
int lda,
84 const double *X,
int incX,
double beta,
86 void dsymv(CBLAS_ORDER Order, CBLAS_UPLO Uplo,
87 int N,
double alpha,
const double *A,
88 int lda,
const double *X,
int incX,
89 double beta,
double *Y,
int incY);
90 double ddot(
int N,
const double *X,
int incX,
91 const double *Y,
int incY);
92 double dasum(
int N,
const double *X,
int incX);
93 CBLAS_INDEX idamax(
int N,
const double *X,
int incX);
94 double dnrm2(
int N,
const double *X,
int incX);
95 int dgesv(CBLAS_ORDER Order,
int N,
int NRHS,
96 double *A,
int lda,
int *ipiv,
98 int zgesv(CBLAS_ORDER Order,
int N,
int NRHS,
99 doublecomplex *A,
int lda,
int *ipiv,
100 doublecomplex *B,
int ldb);
101 int dgetrs(CBLAS_ORDER Order, CBLAS_TRANSPOSE Trans,
102 int N,
int NRHS,
const double *A,
int lda,
103 const int *ipiv,
double *B,
int ldb);
104 int dgetrf(CBLAS_ORDER Order,
int M,
int N,
105 double *A,
int lda,
int *ipiv);
106 int dgetri(CBLAS_ORDER Order,
int N,
double *A,
107 int lda,
const int *ipiv);
108 int dpotrf(ATLAS_ORDER Order, ATLAS_UPLO Uplo,
int N,
double *A,
int lda);
109 int dpotri(ATLAS_ORDER Order, ATLAS_UPLO Uplo,
110 int N,
double *A,
int lda);
111 int dposv(ATLAS_ORDER Order, ATLAS_UPLO Uplo,
112 int N,
int NRHS,
double *A,
int lda,
114 int dpotrs(CBLAS_ORDER Order, CBLAS_UPLO Uplo,
115 int N,
int NRHS,
const double *A,
int lda,
120#if defined(HAVE_LIBATLAS)
128#define dscal cblas_dscal
129#define dcopy cblas_dcopy
130#define ddot cblas_ddot
131#define dnrm2 cblas_dnrm2
132#define dasum cblas_dasum
133#define idamax cblas_idamax
134#define daxpy cblas_daxpy
135#define dgemv cblas_dgemv
136#define dsymv cblas_dsymv
137#define dgemm cblas_dgemm
138#define dsymm cblas_dsymm
140#define dgesv clapack_dgesv
141#define zgesv clapack_zgesv
142#define dgetrs clapack_dgetrs
143#define dgetrf clapack_dgetrf
144#define dgetri clapack_dgetri
145#define dpotrf clapack_dpotrf
146#define dpotri clapack_dpotri
147#define dpotrs clapack_dpotrs
148#define dposv clapack_dposv
153#if defined(HAVE_LIBMKL_INTEL_LP64)
155#include "mkl_cblas.h"
156#include "mkl_lapacke.h"
157#include "mkl_lapack.h"
160#define dscal cblas_dscal
161#define dcopy cblas_dcopy
162#define ddot cblas_ddot
163#define dnrm2 cblas_dnrm2
164#define dasum cblas_dasum
165#define idamax cblas_idamax
166#define daxpy cblas_daxpy
167#define dgemv cblas_dgemv
168#define dsymv cblas_dsymv
169#define dgemm cblas_dgemm
170#define dsymm cblas_dsymm
172#define dgesv LAPACKE_dgesv
173#define zgesv LAPACKE_zgesv
174#define dgetrs LAPACKE_dgetrs
175#define dgetrf LAPACKE_dgetrf
176#define dgetri LAPACKE_dgetri
177#define dpotrf LAPACKE_dpotrf
178#define dpotri LAPACKE_dpotri
179#define dpotrs LAPACKE_dpotrs
180#define dposv LAPACKE_dposv
186#ifndef HAVE_LIBMKL_INTEL_LP64
187 int dsyevx(
char jobz,
char range, CBLAS_UPLO cuplo,
int n,
double *a,
int lda,
double vl,
double vu,
int il,
int iu,
double abstol,
int *m,
double *w,
double *z,
int ldz);
189 int dsyevx(
const char jobz,
const char range,
const CBLAS_UPLO cuplo,
const int n,
double *a,
const int lda,
const double vl,
const double vu,
const int il,
const int iu,
const double abstol,
int *m,
double *w,
double *z,
const int ldz);
192 int dgels( CBLAS_TRANSPOSE ctr,
int m,
int n,
int nrhs,
double* a,
int lda,
double* b,
int ldb);
194 int dgelss(
int m,
int n,
int nrhs,
double *a,
int lda,
double *b,
int ldb,
double rcond);
196 int dgeev(
char jobvl,
char jobvr,
int n,
double *a,
int lda,
double *wr,
double *wi,
double *vl,
int ldvl,
double *vr,
int ldvr);
198 int dsygv(
int itype,
char jobz,
char uplo,
int n,
double *a,
int lda,
double *b,
int ldb,
double *w);
200 int dgesvd(
char jobu,
char jobvt,
int m,
int n,
double *a,
int lda,
double *s,
double *u,
int ldu,
double *vt,
int ldvt);
202 int dsyev(
char jobz,
char ul,
int n,
double *a,
int lda,
double *w);
204 double dlange(
char norm,
int m,
int n,
const double* a,
int lda);
206 double dlansy(
char norm,
char uplo,
int n,
const double* a,
int lda);
Namespace fmatvec.
Definition: _memory.cc:28