📄 blas.hpp
字号:
// Software License for MTL// // Copyright (c) 2007 The Trustees of Indiana University. All rights reserved.// Authors: Peter Gottschling and Andrew Lumsdaine// // This file is part of the Matrix Template Library// // See also license.mtl.txt in the distribution.#ifndef MTL_BLAS_INCLUDE#define MTL_BLAS_INCLUDE#ifdef MTL_HAS_BLAS// #include "mtl/mtl_config.h"#if 0#include "mtl/mtl_complex.h"using std::complex;#endif/*-------------------------------------------------------- Basic Linear Algebra Subprograms for C/C++ Version 1.0 Matthew E. Gaston May 6, 1998----------------------------------------------------------*/#define MTL_BLAS_NAME(name) name##_#ifdef __cplusplusextern "C" {#endif/*--------------------------------------------------------- Level 1 BLAS-----------------------------------------------------------*//*// Dot product functions*/float MTL_BLAS_NAME(sdot)(int*, float*, int*, float*, int*);double MTL_BLAS_NAME(dsdot)(int*, float*, int*, float*, int*);float MTL_BLAS_NAME(sdsdot)(int*, float*, float*, int*, float*, int*);double MTL_BLAS_NAME(ddot)(int*, double*, int*, double*, int*);/* AXPY*/void MTL_BLAS_NAME(saxpy)(int*, float*, float*, int*, float*, int*);void MTL_BLAS_NAME(daxpy)(int*, double*, double*, int*, double*, int*);/* Copy*/void MTL_BLAS_NAME(scopy)(int*, float*, int*, float*, int*);void MTL_BLAS_NAME(dcopy)(int*, double*, int*, double*, int*);/* Swap*/void MTL_BLAS_NAME(sswap)(int*, float*, int*, float*, int*);void MTL_BLAS_NAME(dswap)(int*, double*, int*, double*, int*);/* 2 Norm*/float MTL_BLAS_NAME(snrm2)(int *, float*, int*);double MTL_BLAS_NAME(dnrm2)(int *, double*, int*);/* Sum of Absolute Values*/float MTL_BLAS_NAME(sasum)(int *, float*, int*);double MTL_BLAS_NAME(dasum)(int *, double*, int*);/* Scale*/void MTL_BLAS_NAME(sscal)(int*, float*, float*, int*);void MTL_BLAS_NAME(dscal)(int*, double*, double*, int*);/* Maximum absolute value*/int MTL_BLAS_NAME(isamax)(int *, float*, int*);int MTL_BLAS_NAME(idamax)(int *, double*, int*);/* Givens Plane Rotation*/void MTL_BLAS_NAME(srotg)(float*, float*, float*, float*);void MTL_BLAS_NAME(drotg)(double*, double*, double*, double*);#if 0void MTL_BLAS_NAME(crotg)(complex<float>*,complex<float>*,float*,complex<float>*);void MTL_BLAS_NAME(zrotg)(complex<double>*,complex<double>*,double*,complex<double>*);#endifvoid MTL_BLAS_NAME(srot)(int*, float*, int*, float*, int*, float*, float*);void MTL_BLAS_NAME(drot)(int*, double*, int*, double*, int*, double*, double*);#if 0/* MTL implements ccrot and zzrot */void MTL_BLAS_NAME(csrot)(int*, complex<float>*, int*, complex<float>*, int*, complex<float>*, complex<float>*);void MTL_BLAS_NAME(zdrot)(int*, complex<double>*, int*, complex<double>*, int*, double*, double*);#endif/*--------------------------------------------------------- Level 2 BLAS-----------------------------------------------------------*/void MTL_BLAS_NAME(dgemv)(char*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);void MTL_BLAS_NAME(dger)(int*, int*, double*, double*, int*, double*, int*, double*, int*);void MTL_BLAS_NAME(dgbmv)(char*, int*, int*, int*, int*, double*, double*, int*, double*, int*, double*, double*, int*);void MTL_BLAS_NAME(dtrsv)(char* uplo, char* trans, char* diag, int* n, double *da, int* lda, double *dx, int* incx);/*--------------------------------------------------------- Level 3 BLAS-----------------------------------------------------------*/void MTL_BLAS_NAME(sgemm)(const char* transa, const char* transb, const int* m, const int* n, const int* k, const float* alpha, const float *da, const int* lda, const float *db, const int* ldb, const float* dbeta, float *dc, const int* ldc);void MTL_BLAS_NAME(dgemm)(const char* transa, const char* transb, const int* m, const int* n, const int* k, const double* alpha, const double *da, const int* lda, const double *db, const int* ldb, const double* dbeta, double *dc, const int* ldc);void MTL_BLAS_NAME(cgemm)(const char* transa, const char* transb, const int* m, const int* n, const int* k, const std::complex<float>* alpha, const std::complex<float> *da, const int* lda, const std::complex<float> *db, const int* ldb, const std::complex<float>* dbeta, std::complex<float> *dc, const int* ldc);void MTL_BLAS_NAME(zgemm)(const char* transa, const char* transb, const int* m, const int* n, const int* k, const std::complex<double>* alpha, const std::complex<double> *da, const int* lda, const std::complex<double> *db, const int* ldb, const std::complex<double>* dbeta, std::complex<double> *dc, const int* ldc);#ifdef __cplusplus} // extern "C"#endif#endif // MTL_HAS_BLAS#endif // MTL_BLAS_INCLUDE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -