00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef EPETRA_BLAS_H
00033 #define EPETRA_BLAS_H
00034
00035 #include "Epetra_Object.h"
00036
00038
00057 class Epetra_BLAS {
00058
00059 public:
00061
00062
00063
00065 Epetra_BLAS(void);
00066
00067
00069
00071 Epetra_BLAS(const Epetra_BLAS& BLAS);
00072
00074 virtual ~Epetra_BLAS(void);
00076
00078
00079
00080 float ASUM(const int N, const float * X, const int INCX = 1) const;
00082 double ASUM(const int N, const double * X, const int INCX = 1) const;
00083
00085 float DOT(const int N, const float * X, const float * Y, const int INCX = 1, const int INCY = 1) const;
00087 double DOT(const int N, const double * X, const double * Y, const int INCX = 1, const int INCY = 1) const;
00088
00090 float NRM2(const int N, const float * X, const int INCX = 1) const;
00092 double NRM2(const int N, const double * X, const int INCX = 1) const;
00093
00095 void SCAL( const int N, const float ALPHA, float * X, const int INCX = 1) const;
00097 void SCAL( const int N, const double ALPHA, double * X, const int INCX = 1) const;
00098
00100 void COPY( const int N, const float * X, float * Y, const int INCX = 1, const int INCY = 1) const;
00102 void COPY( const int N, const double * X, double * Y, const int INCX = 1, const int INCY = 1) const;
00103
00105 int IAMAX( const int N, const float * X, const int INCX = 1) const;
00107 int IAMAX( const int N, const double * X, const int INCX = 1) const;
00108
00110 void AXPY( const int N, const float ALPHA, const float * X, float * Y, const int INCX = 1, const int INCY = 1) const;
00112 void AXPY( const int N, const double ALPHA, const double * X, double * Y, const int INCX = 1, const int INCY = 1) const;
00114
00116
00117
00118 void GEMV(const char TRANS, const int M, const int N,
00119 const float ALPHA, const float * A, const int LDA, const float * X,
00120 const float BETA, float * Y, const int INCX = 1, const int INCY = 1) const;
00122 void GEMV(const char TRANS, const int M, const int N,
00123 const double ALPHA, const double * A, const int LDA, const double * X,
00124 const double BETA, double * Y, const int INCX = 1, const int INCY = 1) const;
00126
00127
00129
00130
00131 void GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K,
00132 const float ALPHA, const float * A, const int LDA, const float * B,
00133 const int LDB, const float BETA, float * C, const int LDC) const;
00135 void GEMM(const char TRANSA, const char TRANSB, const int M, const int N, const int K,
00136 const double ALPHA, const double * A, const int LDA, const double * B,
00137 const int LDB, const double BETA, double * C, const int LDC) const;
00138
00140 void SYMM(const char SIDE, const char UPLO, const int M, const int N,
00141 const float ALPHA, const float * A, const int LDA, const float * B,
00142 const int LDB, const float BETA, float * C, const int LDC) const;
00144 void SYMM(const char SIDE, const char UPLO, const int M, const int N,
00145 const double ALPHA, const double * A, const int LDA, const double * B,
00146 const int LDB, const double BETA, double * C, const int LDC) const;
00147
00149 void TRMM(const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N,
00150 const float ALPHA, const float * A, const int LDA, float * B,
00151 const int LDB) const;
00153 void TRMM(const char SIDE, const char UPLO, const char TRANSA, const char DIAG, const int M, const int N,
00154 const double ALPHA, const double * A, const int LDA, double * B,
00155 const int LDB) const;
00157 };
00158
00159
00160 inline Epetra_BLAS::Epetra_BLAS(void){}
00161
00162 inline Epetra_BLAS::Epetra_BLAS(const Epetra_BLAS& BLAS){(void)BLAS;}
00163
00164 inline Epetra_BLAS::~Epetra_BLAS(){}
00165
00166 #endif