1 #ifndef CBLAS_TEMPLATE_H 2 #define CBLAS_TEMPLATE_H 18 size_t cblas_idamin(
const int n,
const double* X,
const int incX);
19 size_t cblas_isamin(
const int n,
const float* X,
const int incX);
25 void dsytrf_(
char* uplo,
int* n,
double* a,
int* lda,
int* ipiv,
26 double* work,
int* lwork,
int*
info);
27 void ssytrf_(
char* uplo,
int* n,
float* a,
int* lda,
int* ipiv,
28 float* work,
int* lwork,
int* info);
29 void dsytri_(
char* uplo,
int* n,
double* a,
int* lda,
int* ipiv,
30 double* work,
int* info);
31 void ssytri_(
char* uplo,
int* n,
float* a,
int* lda,
int* ipiv,
32 float* work,
int* info);
33 void dtrtri_(
char* uplo,
char* diag,
int* n,
double * a,
int* lda,
35 void strtri_(
char* uplo,
char* diag,
int* n,
float * a,
int* lda,
37 void dlasrt_(
char*
id,
const int* n,
double *d,
int* info);
38 void slasrt_(
char*
id,
const int* n,
float*d,
int* info);
39 void dlasrt2_(
char*
id,
const int* n,
double *d,
int* key,
int* info);
40 void slasrt2_(
char*
id,
const int* n,
float*d,
int* key,
int* info);
45 void vdSqr(
const int n,
const double* vecIn,
double* vecOut);
46 void vsSqr(
const int n,
const float* vecIn,
float* vecOut);
47 void vdSqrt(
const int n,
const double* vecIn,
double* vecOut);
48 void vsSqrt(
const int n,
const float* vecIn,
float* vecOut);
49 void vdInvSqrt(
const int n,
const double* vecIn,
double* vecOut);
50 void vsInvSqrt(
const int n,
const float* vecIn,
float* vecOut);
51 void vdSub(
const int n,
const double* vecIn,
const double* vecIn2,
double* vecOut);
52 void vsSub(
const int n,
const float* vecIn,
const float* vecIn2,
float* vecOut);
53 void vdDiv(
const int n,
const double* vecIn,
const double* vecIn2,
double* vecOut);
54 void vsDiv(
const int n,
const float* vecIn,
const float* vecIn2,
float* vecOut);
55 void vdExp(
const int n,
const double* vecIn,
double* vecOut);
56 void vsExp(
const int n,
const float* vecIn,
float* vecOut);
57 void vdInv(
const int n,
const double* vecIn,
double* vecOut);
58 void vsInv(
const int n,
const float* vecIn,
float* vecOut);
59 void vdAdd(
const int n,
const double* vecIn,
const double* vecIn2,
double* vecOut);
60 void vsAdd(
const int n,
const float* vecIn,
const float* vecIn2,
float* vecOut);
61 void vdMul(
const int n,
const double* vecIn,
const double* vecIn2,
double* vecOut);
62 void vsMul(
const int n,
const float* vecIn,
const float* vecIn2,
float* vecOut);
63 void vdAbs(
const int n,
const double* vecIn,
double* vecOut);
64 void vsAbs(
const int n,
const float* vecIn,
float* vecOut);
71 template <
typename T> T
cblas_nrm2(
const int n,
const T* X,
const int incX);
73 template <
typename T>
void cblas_copy(
const int n,
const T* X,
const int incX,
74 T* Y,
const int incY);
76 template <
typename T>
void cblas_axpy(
const int n,
const T a,
const T* X,
77 const int incX, T* Y,
const int incY);
79 template <
typename T>
void cblas_scal(
const int n,
const T a, T* X,
82 template <
typename T> T
cblas_asum(
const int n,
const T* X,
const int incX);
84 template <
typename T> T
cblas_dot(
const int n,
const T* X,
const int incX,
85 const T* Y,
const int incY);
87 template <
typename T>
int cblas_iamin(
const int n,
const T* X,
const int incX);
89 template <
typename T>
int cblas_iamax(
const int n,
const T* X,
const int incX);
96 const int N,
const T alpha,
const T *A,
const int lda,
const T *X,
97 const int incX,
const T beta,T *Y,
const int incY);
101 const T *A,
const int lda, T *X,
const int incX);
104 const CBLAS_UPLO Uplo,
const int N,
const T alpha,
105 const T *X,
const int incX, T *A,
const int lda);
110 const T alpha,
const T *A,
const int lda,
const T *X,
111 const int incX,
const T beta,T *Y,
const int incY);
118 const int M,
const int N,
const int K,
const T alpha,
119 const T *A,
const int lda,
const T *B,
const int ldb,
120 const T beta, T *C,
const int ldc);
124 const T alpha,
const T *A,
const int lda,
125 const T beta, T*C,
const int ldc);
128 const int M,
const int N,
const T alpha,
const T *X,
const int incX,
129 const T* Y,
const int incY, T*A,
const int lda);
134 const int M,
const int N,
const T alpha,
135 const T*A,
const int lda,T *B,
const int ldb);
139 template <
typename T>
void vSqrt(
const int n,
const T* vecIn, T* vecOut);
141 template <
typename T>
void vInvSqrt(
const int n,
const T* vecIn, T* vecOut);
143 template <
typename T>
void vSqr(
const int n,
const T* vecIn, T* vecOut);
145 template <
typename T>
void vSub(
const int n,
const T* vecIn,
const T* vecIn2, T* vecOut);
147 template <
typename T>
void vDiv(
const int n,
const T* vecIn,
const T* vecIn2, T* vecOut);
149 template <
typename T>
void vExp(
const int n,
const T* vecIn, T* vecOut);
151 template <
typename T>
void vInv(
const int n,
const T* vecIn, T* vecOut);
153 template <
typename T>
void vAdd(
const int n,
const T* vecIn,
const T* vecIn2, T* vecOut);
155 template <
typename T>
void vMul(
const int n,
const T* vecIn,
const T* vecIn2, T* vecOut);
157 template <
typename T>
void vAbs(
const int n,
const T* vecIn, T* vecOut);
161 template <
typename T>
void trtri(
char& uplo,
char& diag,
162 int& n, T * a,
int& lda);
164 template <
typename T>
void sytrf(
char& uplo,
int& n, T* a,
int& lda,
int* ipiv,
165 T* work,
int& lwork);
167 template <
typename T>
void sytri(
char& uplo,
int& n, T* a,
int& lda,
int* ipiv,
170 template <
typename T>
void lasrt(
char&
id,
const int& n, T *d);
171 template <
typename T>
void lasrt2(
char&
id,
const int& n, T *d,
int* key);
193 const int incX,
double* Y,
const int incY) {
198 float* Y,
const int incY) {
203 int* Y,
const int incY) {
204 for (
int i = 0; i<n; ++i)
209 bool* Y,
const int incY) {
210 for (
int i = 0; i<n; ++i)
216 const int incX,
double* Y,
const int incY) {
221 const int incX,
float* Y,
const int incY) {
227 const int incX,
int* Y,
const int incY) {
228 for (
int i = 0; i<n; ++i)
234 const int incX,
bool* Y,
const int incY) {
235 for (
int i = 0; i<n; ++i)
253 for (
int i = 0; i<n; ++i) X[i*incX]*=a;
271 const int incX,
const double* Y,
const int incY) {
276 const int incX,
const float* Y,
const int incY) {
280 const int incX,
const int* Y,
const int incY) {
284 for (i = 0; i<n; ++i) {
285 total+=X[i*incX]*Y[j];
292 const int incX,
const bool* Y,
const int incY) {
301 const double alpha,
const double *A,
const int lda,
302 const double *X,
const int incX,
const double beta,
303 double *Y,
const int incY) {
304 cblas_dgemv(order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY);
309 const float alpha,
const float *A,
const int lda,
310 const float *X,
const int incX,
const float beta,
311 float *Y,
const int incY) {
312 cblas_sgemv(order,TransA,M,N,alpha,A,lda,X,incX,beta,Y,incY);
317 const int alpha,
const int *A,
const int lda,
318 const int *X,
const int incX,
const int beta,
319 int *Y,
const int incY) {
325 const bool alpha,
const bool *A,
const int lda,
326 const bool *X,
const int incX,
const bool beta,
327 bool *Y,
const int incY) {
333 const int M,
const int N,
const double alpha,
const double *X,
const int incX,
334 const double* Y,
const int incY,
double *A,
const int lda) {
335 cblas_dger(order,M,N,alpha,X,incX,Y,incY,A,lda);
339 const int M,
const int N,
const float alpha,
const float *X,
const int incX,
340 const float* Y,
const int incY,
float *A,
const int lda) {
341 cblas_sger(order,M,N,alpha,X,incX,Y,incY,A,lda);
346 const double *A,
const int lda,
double *X,
const int incX) {
347 cblas_dtrmv(order,Uplo,TransA,Diag,N,A,lda,X,incX);
352 const float *A,
const int lda,
float *X,
const int incX) {
353 cblas_strmv(order,Uplo,TransA,Diag,N,A,lda,X,incX);
358 const int N,
const double alpha,
const double*X,
359 const int incX,
double *A,
const int lda) {
365 const int N,
const float alpha,
const float*X,
366 const int incX,
float *A,
const int lda) {
372 const float alpha,
const float *A,
const int lda,
const float *X,
373 const int incX,
const float beta,
float *Y,
const int incY) {
374 cblas_ssymv(order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY);
379 const double alpha,
const double *A,
const int lda,
const double *X,
380 const int incX,
const double beta,
double *Y,
const int incY) {
381 cblas_dsymv(order,Uplo,N,alpha,A,lda,X,incX,beta,Y,incY);
389 const int M,
const int N,
const int K,
const double alpha,
390 const double *A,
const int lda,
const double *B,
const int ldb,
391 const double beta,
double *C,
const int ldc) {
392 cblas_dgemm(Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc);
397 const int M,
const int N,
const int K,
const float alpha,
398 const float *A,
const int lda,
const float *B,
const int ldb,
399 const float beta,
float *C,
const int ldc) {
400 cblas_sgemm(Order,TransA,TransB,M,N,K,alpha,A,lda,B,ldb,beta,C,ldc);
404 const int M,
const int N,
const int K,
const int alpha,
405 const int *A,
const int lda,
const int *B,
const int ldb,
406 const int beta,
int *C,
const int ldc) {
412 const int M,
const int N,
const int K,
const bool alpha,
413 const bool *A,
const int lda,
const bool *B,
const int ldb,
414 const bool beta,
bool *C,
const int ldc) {
421 const double alpha,
const double *A,
const int lda,
422 const double beta,
double *C,
const int ldc) {
423 cblas_dsyrk(Order,Uplo,Trans,N,K,alpha,A,lda,beta,C,ldc);
428 const float alpha,
const float *A,
const int lda,
429 const float beta,
float *C,
const int ldc) {
430 cblas_ssyrk(Order,Uplo,Trans,N,K,alpha,A,lda,beta,C,ldc);
435 const int alpha,
const int *A,
const int lda,
436 const int beta,
int *C,
const int ldc) {
442 const bool alpha,
const bool *A,
const int lda,
443 const bool beta,
bool *C,
const int ldc) {
451 const int M,
const int N,
const double alpha,
452 const double *A,
const int lda,
double *B,
const int ldb) {
453 cblas_dtrmm(Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb);
459 const int M,
const int N,
const float alpha,
460 const float *A,
const int lda,
float *B,
const int ldb) {
461 cblas_strmm(Order,Side,Uplo,TransA,Diag,M,N,alpha,A,lda,B,ldb);
477 int& n,
double * a,
int& lda) {
482 int& n,
float* a,
int& lda) {
487 int& lda,
int* ipiv,
double* work,
int& lwork) {
492 int& lda,
int* ipiv,
float* work,
int& lwork) {
497 int& lda,
int* ipiv,
double* work) {
502 int& lda,
int* ipiv,
float* work) {
506 template <>
inline void lasrt(
char&
id,
const int& n,
double *d) {
510 template <>
inline void lasrt(
char&
id,
const int& n,
float *d) {
513 template <>
inline void lasrt2(
char&
id,
const int& n,
double *d,
int* key) {
517 template <>
inline void lasrt2(
char&
id,
const int& n,
float *d,
int* key) {
524 template <>
inline void vSqr<double>(
const int n,
const double* vecIn,
527 vdSqr(n,vecIn,vecOut);
530 template <>
inline void vSqr<float>(
const int n,
const float* vecIn,
532 vsSqr(n,vecIn,vecOut);
534 template <>
inline void vSqrt<double>(
const int n,
const double* vecIn,
536 vdSqrt(n,vecIn,vecOut);
539 template <>
inline void vSqrt<float>(
const int n,
const float* vecIn,
541 vsSqrt(n,vecIn,vecOut);
543 template <>
inline void vInvSqrt<double>(
const int n,
const double* vecIn,
545 vdInvSqrt(n,vecIn,vecOut);
548 template <>
inline void vInvSqrt<float>(
const int n,
const float* vecIn,
550 vsInvSqrt(n,vecIn,vecOut);
554 template <>
inline void vSub<double>(
const int n,
const double* vecIn,
555 const double* vecIn2,
double* vecOut) {
556 vdSub(n,vecIn,vecIn2,vecOut);
559 template <>
inline void vSub<float>(
const int n,
const float* vecIn,
560 const float* vecIn2,
float* vecOut) {
561 vsSub(n,vecIn,vecIn2,vecOut);
564 template <>
inline void vDiv<double>(
const int n,
const double* vecIn,
565 const double* vecIn2,
double* vecOut) {
566 vdDiv(n,vecIn,vecIn2,vecOut);
569 template <>
inline void vDiv<float>(
const int n,
const float* vecIn,
570 const float* vecIn2,
float* vecOut) {
571 vsDiv(n,vecIn,vecIn2,vecOut);
574 template <>
inline void vExp<double>(
const int n,
const double* vecIn,
576 vdExp(n,vecIn,vecOut);
579 template <>
inline void vExp<float>(
const int n,
const float* vecIn,
581 vsExp(n,vecIn,vecOut);
584 template <>
inline void vInv<double>(
const int n,
const double* vecIn,
586 vdInv(n,vecIn,vecOut);
589 template <>
inline void vInv<float>(
const int n,
const float* vecIn,
591 vsInv(n,vecIn,vecOut);
594 template <>
inline void vAdd<double>(
const int n,
const double* vecIn,
595 const double* vecIn2,
double* vecOut) {
596 vdAdd(n,vecIn,vecIn2,vecOut);
599 template <>
inline void vAdd<float>(
const int n,
const float* vecIn,
600 const float* vecIn2,
float* vecOut) {
601 vsAdd(n,vecIn,vecIn2,vecOut);
604 template <>
inline void vMul<double>(
const int n,
const double* vecIn,
605 const double* vecIn2,
double* vecOut) {
606 vdMul(n,vecIn,vecIn2,vecOut);
609 template <>
inline void vMul<float>(
const int n,
const float* vecIn,
610 const float* vecIn2,
float* vecOut) {
611 vsMul(n,vecIn,vecIn2,vecOut);
615 template <>
inline void vAbs(
const int n,
const double* vecIn,
617 vdAbs(n,vecIn,vecOut);
620 template <>
inline void vAbs(
const int n,
const float* vecIn,
622 vsAbs(n,vecIn,vecOut);
628 template <>
inline int cblas_iamin<double>(
const int n,
const double* X,
634 template <>
inline int cblas_iamin<float>(
const int n,
const float* X,
640 template <
typename T>
inline void vSqr(
const int n,
const T* vecIn, T* vecOut) {
642 for (
int i = 0; i<n; ++i) vecOut[i]=vecIn[i]*vecIn[i];
644 template <
typename T>
inline void vSqrt(
const int n,
const T* vecIn, T* vecOut) {
645 for (
int i = 0; i<n; ++i) vecOut[i]=spams::sqr<T>(vecIn[i]);
647 template <
typename T>
inline void vInvSqrt(
const int n,
const T* vecIn, T* vecOut) {
648 for (
int i = 0; i<n; ++i) vecOut[i]=T(1.0)/spams::sqr<T>(vecIn[i]);
652 template <
typename T>
inline void vSub(
const int n,
const T* vecIn1,
653 const T* vecIn2, T* vecOut) {
654 for (
int i = 0; i<n; ++i) vecOut[i]=vecIn1[i]-vecIn2[i];
657 template <
typename T>
inline void vInv(
const int n,
const T* vecIn, T* vecOut) {
658 for (
int i = 0; i<n; ++i) vecOut[i]=1.0/vecIn[i];
661 template <
typename T>
inline void vExp(
const int n,
const T* vecIn, T* vecOut) {
662 for (
int i = 0; i<n; ++i) vecOut[i]=exp(vecIn[i]);
665 template <
typename T>
inline void vAdd(
const int n,
const T* vecIn1,
666 const T* vecIn2, T* vecOut) {
667 for (
int i = 0; i<n; ++i) vecOut[i]=vecIn1[i]+vecIn2[i];
670 template <
typename T>
inline void vMul(
const int n,
const T* vecIn1,
671 const T* vecIn2, T* vecOut) {
672 for (
int i = 0; i<n; ++i) vecOut[i]=vecIn1[i]*vecIn2[i];
675 template <
typename T>
inline void vDiv(
const int n,
const T* vecIn1,
676 const T* vecIn2, T* vecOut) {
677 for (
int i = 0; i<n; ++i) vecOut[i]=vecIn1[i]/vecIn2[i];
680 template <
typename T>
inline void vAbs(
const int n,
const T* vecIn,
682 for (
int i = 0; i<n; ++i) vecOut[i]=spams::abs<T>(vecIn[i]);
686 template <
typename T>
inline int cblas_iamin(
int n, T* X,
int incX) {
688 double min=fabs(X[0]);
689 for (
int j = 1; j<n; j+=incX) {
690 double cur = fabs(X[j]);
void cblas_trmm(const CBLAS_ORDER Order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int M, const int N, const T alpha, const T *A, const int lda, T *B, const int ldb)
interface to cblas_*trmm
void cblas_strmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const float *A, const int lda, float *X, const int incX)
void cblas_trmv< float >(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int N, const float *A, const int lda, float *X, const int incX)
Implementation of the interface for cblas_strmv.
void cblas_gemv< int >(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const int M, const int N, const int alpha, const int *A, const int lda, const int *X, const int incX, const int beta, int *Y, const int incY)
Implementation of the interface for cblas_sgemv.
void cblas_syrk< float >(const CBLAS_ORDER Order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float *A, const int lda, const float beta, float *C, const int ldc)
Implementation of the interface for cblas_ssyrk.
void vSqr(const int n, const T *vecIn, T *vecOut)
interface to v*Sqr
double cblas_dot< double >(const int n, const double *X, const int incX, const double *Y, const int incY)
Implementation of the interface for cblas_ddot.
vcl_size_t cblas_idamin(const int n, const double *X, const int incX)
external functions
void cblas_dscal(const int N, const double alpha, double *X, const int incX)
void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc)
void cblas_ger< float >(const CBLAS_ORDER order, const int M, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A, const int lda)
Implementation of the interface for cblas_sger.
void cblas_dtrmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int N, const double *A, const int lda, double *X, const int incX)
void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, float *B, const int ldb)
void vSqrt(const int n, const T *vecIn, T *vecOut)
interface to v*Sqr
void cblas_scal(const int n, const T a, T *X, const int incX)
interface to cblas_*scal
void vSub(const int n, const T *vecIn, const T *vecIn2, T *vecOut)
interface to v*Sub
void cblas_ssyr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *X, const int incX, float *A, const int lda)
T cblas_dot(const int n, const T *X, const int incX, const T *Y, const int incY)
interface to cblas_*adot
void cblas_trmv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int N, const T *A, const int lda, T *X, const int incX)
interface to cblas_*trmv
void cblas_axpy< bool >(const int n, const bool a, const bool *X, const int incX, bool *Y, const int incY)
Implementation of the interface for cblas_saxpy.
void lasrt2(char &id, const int &n, T *d, int *key)
void sytri(char &uplo, int &n, T *a, int &lda, int *ipiv, T *work)
interface to *sytri
void sytrf< float >(char &uplo, int &n, float *a, int &lda, int *ipiv, float *work, int &lwork)
Implemenation of the interface for ssytrf.
void cblas_gemm(const CBLAS_ORDER Order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const T alpha, const T *A, const int lda, const T *B, const int ldb, const T beta, T *C, const int ldc)
interface to cblas_*gemm
void vExp(const int n, const T *vecIn, T *vecOut)
interface to v*Exp
void cblas_axpy< float >(const int n, const float a, const float *X, const int incX, float *Y, const int incY)
Implementation of the interface for cblas_saxpy.
void cblas_copy(const int n, const T *X, const int incX, T *Y, const int incY)
interface to cblas_*copy
void cblas_gemm< int >(const CBLAS_ORDER Order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const int alpha, const int *A, const int lda, const int *B, const int ldb, const int beta, int *C, const int ldc)
float cblas_sasum(const int N, const float *X, const int incX)
double cblas_ddot(const int N, const double *X, const int incX, const double *Y, const int incY)
void ssytrf_(char *uplo, int *n, float *a, int *lda, int *ipiv, float *work, int *lwork, int *info)
void cblas_axpy< int >(const int n, const int a, const int *X, const int incX, int *Y, const int incY)
Implementation of the interface for cblas_saxpy.
int cblas_iamin(const int n, const T *X, const int incX)
interface to cblas_i*amin
void cblas_trmm< float >(const CBLAS_ORDER Order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int M, const int N, const float alpha, const float *A, const int lda, float *B, const int ldb)
Implementation of the interface for cblas_strmm.
void ssytri_(char *uplo, int *n, float *a, int *lda, int *ipiv, float *work, int *info)
void dlasrt2_(char *id, const int *n, double *d, int *key, int *info)
float cblas_nrm2< float >(const int n, const float *X, const int incX)
Implementation of the interface for cblas_snrm2.
void cblas_axpy< double >(const int n, const double a, const double *X, const int incX, double *Y, const int incY)
Implementation of the interface for cblas_daxpy.
void cblas_ssymv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY)
void cblas_gemv< float >(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY)
Implementation of the interface for cblas_sgemv.
void cblas_gemm< double >(const CBLAS_ORDER Order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc)
Implementation of the interface for cblas_dgemm.
void cblas_scal< bool >(const int n, const bool a, bool *X, const int incX)
Implementation of the interface for cblas_sscal.
void cblas_dsymv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY)
void trtri(char &uplo, char &diag, int &n, T *a, int &lda)
interface to *trtri
void cblas_scopy(const int N, const float *X, const int incX, float *Y, const int incY)
void slasrt2_(char *id, const int *n, float *d, int *key, int *info)
void sytri< float >(char &uplo, int &n, float *a, int &lda, int *ipiv, float *work)
Implemenation of the interface for ssytri.
void cblas_copy< bool >(const int n, const bool *X, const int incX, bool *Y, const int incY)
Implementation of the interface for cblas_scopy.
void cblas_saxpy(const int N, const float alpha, const float *X, const int incX, float *Y, const int incY)
float cblas_asum< float >(const int n, const float *X, const int incX)
Implementation of the interface for cblas_sasum.
void sytri< double >(char &uplo, int &n, double *a, int &lda, int *ipiv, double *work)
Implemenation of the interface for dsytri.
int cblas_iamax< double >(const int n, const double *X, const int incX)
Implementation of the interface for cblas_idamax.
void cblas_ger(const CBLAS_ORDER order, const int M, const int N, const T alpha, const T *X, const int incX, const T *Y, const int incY, T *A, const int lda)
interface to cblas_*ger
void cblas_copy< double >(const int n, const double *X, const int incX, double *Y, const int incY)
Implementation of the interface for cblas_dcopy.
int cblas_dot< int >(const int n, const int *X, const int incX, const int *Y, const int incY)
const T & min(const T &a, const T &b)
Return the minimum between a and b.
void cblas_syrk< int >(const CBLAS_ORDER Order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const int N, const int K, const int alpha, const int *A, const int lda, const int beta, int *C, const int ldc)
Implementation of the interface for cblas_ssyrk.
float cblas_snrm2(const int N, const float *X, const int incX)
double cblas_dnrm2(const int N, const double *X, const int incX)
int cblas_idamax(const int N, const double *X, const int incX)
void cblas_gemv< bool >(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const int M, const int N, const bool alpha, const bool *A, const int lda, const bool *X, const int incX, const bool beta, bool *Y, const int incY)
Implementation of the interface for cblas_sgemv.
void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const float alpha, const float *A, const int lda, const float beta, float *C, const int ldc)
void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const double alpha, const double *A, const int lda, const double *B, const int ldb, const double beta, double *C, const int ldc)
void vDiv(const int n, const T *vecIn, const T *vecIn2, T *vecOut)
interface to v*Div
float cblas_sdot(const int N, const float *X, const int incX, const float *Y, const int incY)
void cblas_trmv< double >(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int N, const double *A, const int lda, double *X, const int incX)
Implementation of the interface for cblas_dtrmv.
int cblas_iamax< float >(const int n, const float *X, const int incX)
Implementation of the interface for cblas_isamax.
void vAdd(const int n, const T *vecIn, const T *vecIn2, T *vecOut)
interface to v*Add
void dsytri_(char *uplo, int *n, double *a, int *lda, int *ipiv, double *work, int *info)
void dsytrf_(char *uplo, int *n, double *a, int *lda, int *ipiv, double *work, int *lwork, int *info)
void cblas_symv(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const int N, const T alpha, const T *A, const int lda, const T *X, const int incX, const T beta, T *Y, const int incY)
interface to cblas_*symv
void cblas_dger(const enum CBLAS_ORDER Order, const int M, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A, const int lda)
void vInv(const int n, const T *vecIn, T *vecOut)
interface to v*Inv
void cblas_copy< int >(const int n, const int *X, const int incX, int *Y, const int incY)
Implementation of the interface for cblas_scopy.
void vAbs(const int n, const T *vecIn, T *vecOut)
interface to v*Abs
void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double *A, const int lda, const double beta, double *C, const int ldc)
void cblas_scal< int >(const int n, const int a, int *X, const int incX)
Implementation of the interface for cblas_sscal.
void cblas_ger< double >(const CBLAS_ORDER order, const int M, const int N, const double alpha, const double *X, const int incX, const double *Y, const int incY, double *A, const int lda)
Implementation of the interface for cblas_dger.
void sytrf< double >(char &uplo, int &n, double *a, int &lda, int *ipiv, double *work, int &lwork)
Implemenation of the interface for dsytrf.
void cblas_scal< float >(const int n, const float a, float *X, const int incX)
Implementation of the interface for cblas_sscal.
void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double *A, const int lda, double *B, const int ldb)
void cblas_gemv(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const int M, const int N, const T alpha, const T *A, const int lda, const T *X, const int incX, const T beta, T *Y, const int incY)
interface to cblas_*gemv
void cblas_syrk(const CBLAS_ORDER Order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const int N, const int K, const T alpha, const T *A, const int lda, const T beta, T *C, const int ldc)
interface to cblas_*syrk
void vInvSqrt(const int n, const T *vecIn, T *vecOut)
interface to v*Sqr
void cblas_copy< float >(const int n, const float *X, const int incX, float *Y, const int incY)
Implementation of the interface for cblas_scopy.
void slasrt_(char *id, const int *n, float *d, int *info)
void trtri< float >(char &uplo, char &diag, int &n, float *a, int &lda)
Implemenation of the interface for strtri.
bool cblas_dot< bool >(const int n, const bool *X, const int incX, const bool *Y, const int incY)
Implementation of the interface for cblas_sdot.
void cblas_sgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const float alpha, const float *A, const int lda, const float *X, const int incX, const float beta, float *Y, const int incY)
void cblas_axpy(const int n, const T a, const T *X, const int incX, T *Y, const int incY)
interface to cblas_*axpy
int cblas_isamax(const int N, const float *X, const int incX)
void dlasrt_(char *id, const int *n, double *d, int *info)
void cblas_trmm< double >(const CBLAS_ORDER Order, const CBLAS_SIDE Side, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE TransA, const CBLAS_DIAG Diag, const int M, const int N, const double alpha, const double *A, const int lda, double *B, const int ldb)
Implementation of the interface for cblas_dtrmm.
double cblas_dasum(const int N, const double *X, const int incX)
void dtrtri_(char *uplo, char *diag, int *n, double *a, int *lda, int *info)
void cblas_syr(const CBLAS_ORDER order, const CBLAS_UPLO Uplo, const int N, const T alpha, const T *X, const int incX, T *A, const int lda)
interface to cblas_*syr
void cblas_gemv< double >(const CBLAS_ORDER order, const CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY)
Implementation of the interface for cblas_dgemv.
void lasrt(char &id, const int &n, T *d)
interaface to *lasrt
int cblas_iamax(const int n, const T *X, const int incX)
interface to cblas_i*amax
void cblas_gemm< float >(const CBLAS_ORDER Order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float *A, const int lda, const float *B, const int ldb, const float beta, float *C, const int ldc)
Implementation of the interface for cblas_sgemm.
void sytrf(char &uplo, int &n, T *a, int &lda, int *ipiv, T *work, int &lwork)
interface to *sytrf
void strtri_(char *uplo, char *diag, int *n, float *a, int *lda, int *info)
void cblas_dcopy(const int N, const double *X, const int incX, double *Y, const int incY)
void cblas_syrk< bool >(const CBLAS_ORDER Order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const int N, const int K, const bool alpha, const bool *A, const int lda, const bool beta, bool *C, const int ldc)
Implementation of the interface for cblas_ssyrk.
void cblas_dgemv(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const int M, const int N, const double alpha, const double *A, const int lda, const double *X, const int incX, const double beta, double *Y, const int incY)
void cblas_sger(const enum CBLAS_ORDER Order, const int M, const int N, const float alpha, const float *X, const int incX, const float *Y, const int incY, float *A, const int lda)
static char low
a few static variables for lapack
void cblas_scal< double >(const int n, const double a, double *X, const int incX)
Implementation of the interface for cblas_dscal.
void cblas_sscal(const int N, const float alpha, float *X, const int incX)
vcl_size_t cblas_isamin(const int n, const float *X, const int incX)
void trtri< double >(char &uplo, char &diag, int &n, double *a, int &lda)
Implemenation of the interface for dtrtri.
double cblas_asum< double >(const int n, const double *X, const int incX)
Implementation of the interface for cblas_dasum.
void cblas_syrk< double >(const CBLAS_ORDER Order, const CBLAS_UPLO Uplo, const CBLAS_TRANSPOSE Trans, const int N, const int K, const double alpha, const double *A, const int lda, const double beta, double *C, const int ldc)
Implementation of the interface for cblas_dsyrk.
T cblas_nrm2(const int n, const T *X, const int incX)
interface to cblas_*nrm2
void cblas_daxpy(const int N, const double alpha, const double *X, const int incX, double *Y, const int incY)
float cblas_dot< float >(const int n, const float *X, const int incX, const float *Y, const int incY)
Implementation of the interface for cblas_sdot.
void vMul(const int n, const T *vecIn, const T *vecIn2, T *vecOut)
interface to v*Mul
void cblas_gemm< bool >(const CBLAS_ORDER Order, const CBLAS_TRANSPOSE TransA, const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const bool alpha, const bool *A, const int lda, const bool *B, const int ldb, const bool beta, bool *C, const int ldc)
Implementation of the interface for cblas_sgemm.
double cblas_nrm2< double >(const int n, const double *X, const int incX)
Implementation of the interface for cblas_dnrm2.
T cblas_asum(const int n, const T *X, const int incX)
interface to cblas_*asum
void cblas_dsyr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N, const double alpha, const double *X, const int incX, double *A, const int lda)