Functions

blas Namespace Reference

namespace for BLAS functions More...

Functions

float sdot_ (const int *n, const float *x, const int *incx, const float *y, const int *incy)
double ddot_ (const int *n, const double *x, const int *incx, const double *y, const int *incy)
void sgemv_ (const char *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 dgemv_ (const char *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 cgemv_ (const char *transA, const int *m, const int *n, const void *alpha, const void *A, const int *ldA, const void *x, const int *incx, const void *beta, void *y, const int *incy)
void zgemv_ (const char *transA, const int *m, const int *n, const void *alpha, const void *A, const int *ldA, const void *x, const int *incx, const void *beta, void *y, const int *incy)
void sgemm_ (const char *transA, const char *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 dgemm_ (const char *transA, const char *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 cgemm_ (const char *transA, const char *transB, const int *m, const int *n, const int *k, const void *alpha, const void *A, const int *ldA, const void *B, const int *ldB, const void *beta, void *C, const int *ldC)
void zgemm_ (const char *transA, const char *transB, const int *m, const int *n, const int *k, const void *alpha, const void *A, const int *ldA, const void *B, const int *ldB, const void *beta, void *C, const int *ldC)
template<typename eT >
arma_inline eT dot_ (const int *n, const eT *x, const eT *y)
template<typename eT >
void gemv_ (const char *transA, const int *m, const int *n, const eT *alpha, const eT *A, const int *ldA, const eT *x, const int *incx, const eT *beta, eT *y, const int *incy)
template<typename eT >
void gemm_ (const char *transA, const char *transB, const int *m, const int *n, const int *k, const eT *alpha, const eT *A, const int *ldA, const eT *B, const int *ldB, const eT *beta, eT *C, const int *ldC)

Detailed Description

namespace for BLAS functions


Function Documentation

float blas::sdot_ ( const int *  n,
const float *  x,
const int *  incx,
const float *  y,
const int *  incy 
)

Referenced by dot_().

double blas::ddot_ ( const int *  n,
const double *  x,
const int *  incx,
const double *  y,
const int *  incy 
)

Referenced by dot_().

void blas::sgemv_ ( const char *  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 
)

Referenced by gemv_().

void blas::dgemv_ ( const char *  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 
)

Referenced by gemv_().

void blas::cgemv_ ( const char *  transA,
const int *  m,
const int *  n,
const void *  alpha,
const void *  A,
const int *  ldA,
const void *  x,
const int *  incx,
const void *  beta,
void *  y,
const int *  incy 
)

Referenced by gemv_().

void blas::zgemv_ ( const char *  transA,
const int *  m,
const int *  n,
const void *  alpha,
const void *  A,
const int *  ldA,
const void *  x,
const int *  incx,
const void *  beta,
void *  y,
const int *  incy 
)

Referenced by gemv_().

void blas::sgemm_ ( const char *  transA,
const char *  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 
)

Referenced by gemm_().

void blas::dgemm_ ( const char *  transA,
const char *  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 
)

Referenced by gemm_().

void blas::cgemm_ ( const char *  transA,
const char *  transB,
const int *  m,
const int *  n,
const int *  k,
const void *  alpha,
const void *  A,
const int *  ldA,
const void *  B,
const int *  ldB,
const void *  beta,
void *  C,
const int *  ldC 
)

Referenced by gemm_().

void blas::zgemm_ ( const char *  transA,
const char *  transB,
const int *  m,
const int *  n,
const int *  k,
const void *  alpha,
const void *  A,
const int *  ldA,
const void *  B,
const int *  ldB,
const void *  beta,
void *  C,
const int *  ldC 
)

Referenced by gemm_().

template<typename eT >
arma_inline eT blas::dot_ ( const int *  n,
const eT *  x,
const eT *  y 
)

Definition at line 49 of file blas_proto.hpp.

References ddot_(), and sdot_().

Referenced by op_dot::direct_dot().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    const int inc = 1;
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      return eT( sdot_(n, (const T*)x, &inc, (const T*)y, &inc) );
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      return eT( ddot_(n, (const T*)x, &inc, (const T*)y, &inc) );
      }
    else
      {
      return eT(0);  // prevent compiler warnings
      }
    }

template<typename eT >
void blas::gemv_ ( const char *  transA,
const int *  m,
const int *  n,
const eT *  alpha,
const eT *  A,
const int *  ldA,
const eT *  x,
const int *  incx,
const eT *  beta,
eT *  y,
const int *  incy 
) [inline]

Definition at line 77 of file blas_proto.hpp.

References cgemv_(), dgemv_(), sgemv_(), and zgemv_().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgemv_(transA, m, n, (const T*)alpha, (const T*)A, ldA, (const T*)x, incx, (const T*)beta, (T*)y, incy);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgemv_(transA, m, n, (const T*)alpha, (const T*)A, ldA, (const T*)x, incx, (const T*)beta, (T*)y, incy);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgemv_(transA, m, n, (const T*)alpha, (const T*)A, ldA, (const T*)x, incx, (const T*)beta, (T*)y, incy);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgemv_(transA, m, n, (const T*)alpha, (const T*)A, ldA, (const T*)x, incx, (const T*)beta, (T*)y, incy);
      }
    
    }

template<typename eT >
void blas::gemm_ ( const char *  transA,
const char *  transB,
const int *  m,
const int *  n,
const int *  k,
const eT *  alpha,
const eT *  A,
const int *  ldA,
const eT *  B,
const int *  ldB,
const eT *  beta,
eT *  C,
const int *  ldC 
) [inline]

Definition at line 112 of file blas_proto.hpp.

References cgemm_(), dgemm_(), sgemm_(), and zgemm_().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgemm_(transA, transB, m, n, k, (const T*)alpha, (const T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgemm_(transA, transB, m, n, k, (const T*)alpha, (const T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgemm_(transA, transB, m, n, k, (const T*)alpha, (const T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgemm_(transA, transB, m, n, k, (const T*)alpha, (const T*)A, ldA, (const T*)B, ldB, (const T*)beta, (T*)C, ldC);
      }
    
    }