00001
00002 #ifndef blasH
00003 #define blasH
00004
00005 #include <complex>
00006 #include "vector.h"
00007 #include "matrix.h"
00008
00009 namespace blas {
00010
00011 using namespace colarray;
00012 float dot(const Vector< float >& x, const Vector< float >& y);
00013 double dot(const Vector< double >& x, const Vector< double >& y);
00014 float nrm2(const Vector< float >& x);
00015 double nrm2(const Vector< double >& x);
00016 float nrm2(const Vector< std::complex<float> >& x);
00017 double nrm2(const Vector< std::complex<double> >& x);
00018 void axpy(const float alpha, const Vector< float >& x, Vector< float >& y);
00019 void axpy(const double alpha, const Vector< double >& x, Vector< double >& y);
00020 void axpy(const std::complex<float> alpha, const Vector< std::complex<float> >& x, Vector< std::complex<float> >& y);
00021 void axpy(const std::complex<double> alpha, const Vector< std::complex<double> >& x, Vector< std::complex<double> >& y);
00022
00023 void gemv(char trans,
00024 const Matrix< float >& A,
00025 const Vector< float >& x,
00026 Vector< float >& y,
00027 float alpha, float beta)
00028 ;
00029
00030 void gemv(char trans,
00031 const Matrix< double >& A,
00032 const Vector< double >& x,
00033 Vector< double >& y,
00034 double alpha, double beta)
00035 ;
00036
00037 void gemv(char trans,
00038 const Matrix< std::complex<float> >& A,
00039 const Vector< std::complex<float> >& x,
00040 Vector< std::complex<float> >& y,
00041 std::complex<float> alpha, std::complex<float> beta)
00042 ;
00043
00044 void gemv(char trans,
00045 const Matrix< std::complex<double> >& A,
00046 const Vector< std::complex<double> >& x,
00047 Vector< std::complex<double> >& y,
00048 std::complex<double> alpha, std::complex<double> beta)
00049 ;
00050
00051 void gemm(char transA, char transB,
00052 const Matrix< float >& A,
00053 const Matrix< float >& B,
00054 Matrix< float >& C,
00055 float alpha, float beta);
00056
00057 void gemm(char transA, char transB,
00058 const Matrix< double >& A,
00059 const Matrix< double >& B,
00060 Matrix< double >& C,
00061 double alpha, double beta);
00062
00063 void gemm(char transA, char transB,
00064 const Matrix< std::complex<float> >& A,
00065 const Matrix< std::complex<float> >& B,
00066 Matrix< std::complex<float> >& C,
00067 std::complex<float> alpha, std::complex<float> beta);
00068
00069 void gemm(char transA, char transB,
00070 const Matrix< std::complex<double> >& A,
00071 const Matrix< std::complex<double> >& B,
00072 Matrix< std::complex<double> >& C,
00073 std::complex<double> alpha, std::complex<double> beta);
00074
00075 void gesv(const Matrix< float >& A, Matrix< float >& B, Vector< int_t >& ipiv, int_t& info);
00076
00077 void gesv(const Matrix< double >& A, Matrix< double >& B, Vector< int_t >& ipiv, int_t& info);
00078
00079 void gesv(const Matrix< std::complex<float> >& A, Matrix< std::complex<float> >& B, Vector< int_t >& ipiv, int_t& info);
00080
00081 void gesv(const Matrix< std::complex<double> >& A, Matrix< std::complex<double> >& B, Vector< int_t >& ipiv, int_t& info);
00082
00083 void getrf(const Matrix< float >& A, Vector< int_t >& ipiv, int_t& info);
00084
00085 void getrf(const Matrix< double >& A, Vector< int_t >& ipiv, int_t& info);
00086
00087 void getrf(const Matrix< std::complex<float> >& A, Vector< int_t >& ipiv, int_t& info);
00088
00089 void getrf(const Matrix< std::complex<double> >& A, Vector< int_t >& ipiv, int_t& info);
00090
00091 void syev(char jobz, char uplo, Matrix< float >& A, ColumnVector< float >&w, int_t& info);
00092
00093 void syev(char jobz, char uplo, Matrix< double >& A, ColumnVector< double >&w, int_t& info);
00094
00095 }
00096
00097 #endif