Functions

LAPACK

//! More...

Functions

void lapack::sgetrf_ (int *m, int *n, float *a, int *lda, int *ipiv, int *info)
void lapack::dgetrf_ (int *m, int *n, double *a, int *lda, int *ipiv, int *info)
void lapack::cgetrf_ (int *m, int *n, void *a, int *lda, int *ipiv, int *info)
void lapack::zgetrf_ (int *m, int *n, void *a, int *lda, int *ipiv, int *info)
void lapack::sgetri_ (int *n, float *a, int *lda, int *ipiv, float *work, int *lwork, int *info)
void lapack::dgetri_ (int *n, double *a, int *lda, int *ipiv, double *work, int *lwork, int *info)
void lapack::cgetri_ (int *n, void *a, int *lda, int *ipiv, void *work, int *lwork, int *info)
void lapack::zgetri_ (int *n, void *a, int *lda, int *ipiv, void *work, int *lwork, int *info)
void lapack::ssyev_ (char *jobz, char *uplo, int *n, float *a, int *lda, float *w, float *work, int *lwork, int *info)
void lapack::dsyev_ (char *jobz, char *uplo, int *n, double *a, int *lda, double *w, double *work, int *lwork, int *info)
void lapack::cheev_ (char *jobz, char *uplo, int *n, void *a, int *lda, float *w, void *work, int *lwork, float *rwork, int *info)
void lapack::zheev_ (char *jobz, char *uplo, int *n, void *a, int *lda, double *w, void *work, int *lwork, double *rwork, int *info)
void lapack::sgeev_ (char *jobvl, char *jobvr, int *n, float *a, int *lda, float *wr, float *wi, float *vl, int *ldvl, float *vr, int *ldvr, float *work, int *lwork, int *info)
void lapack::dgeev_ (char *jobvl, char *jobvr, int *n, double *a, int *lda, double *wr, double *wi, double *vl, int *ldvl, double *vr, int *ldvr, double *work, int *lwork, int *info)
void lapack::cgeev_ (char *jobvr, char *jobvl, int *n, void *a, int *lda, void *w, void *vl, int *ldvl, void *vr, int *ldvr, void *work, int *lwork, float *rwork, int *info)
void lapack::zgeev_ (char *jobvl, char *jobvr, int *n, void *a, int *lda, void *w, void *vl, int *ldvl, void *vr, int *ldvr, void *work, int *lwork, double *rwork, int *info)
void lapack::spotrf_ (char *uplo, int *n, float *a, int *lda, int *info)
void lapack::dpotrf_ (char *uplo, int *n, double *a, int *lda, int *info)
void lapack::cpotrf_ (char *uplo, int *n, void *a, int *lda, int *info)
void lapack::zpotrf_ (char *uplo, int *n, void *a, int *lda, int *info)
void lapack::sgeqrf_ (int *m, int *n, float *a, int *lda, float *tau, float *work, int *lwork, int *info)
void lapack::dgeqrf_ (int *m, int *n, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
void lapack::cgeqrf_ (int *m, int *n, void *a, int *lda, void *tau, void *work, int *lwork, int *info)
void lapack::zgeqrf_ (int *m, int *n, void *a, int *lda, void *tau, void *work, int *lwork, int *info)
void lapack::sorgqr_ (int *m, int *n, int *k, float *a, int *lda, float *tau, float *work, int *lwork, int *info)
void lapack::dorgqr_ (int *m, int *n, int *k, double *a, int *lda, double *tau, double *work, int *lwork, int *info)
void lapack::cungqr_ (int *m, int *n, int *k, void *a, int *lda, void *tau, void *work, int *lwork, int *info)
void lapack::zungqr_ (int *m, int *n, int *k, void *a, int *lda, void *tau, void *work, int *lwork, int *info)
void lapack::sgesvd_ (char *jobu, char *jobvt, int *m, int *n, float *a, int *lda, float *s, float *u, int *ldu, float *vt, int *ldvt, float *work, int *lwork, int *info)
void lapack::dgesvd_ (char *jobu, char *jobvt, int *m, int *n, double *a, int *lda, double *s, double *u, int *ldu, double *vt, int *ldvt, double *work, int *lwork, int *info)
void lapack::cgesvd_ (char *jobu, char *jobvt, int *m, int *n, void *a, int *lda, float *s, void *u, int *ldu, void *vt, int *ldvt, void *work, int *lwork, float *rwork, int *info)
void lapack::zgesvd_ (char *jobu, char *jobvt, int *m, int *n, void *a, int *lda, double *s, void *u, int *ldu, void *vt, int *ldvt, void *work, int *lwork, double *rwork, int *info)
void lapack::sgesv_ (int *n, int *nrhs, float *a, int *lda, int *ipiv, float *b, int *ldb, int *info)
void lapack::dgesv_ (int *n, int *nrhs, double *a, int *lda, int *ipiv, double *b, int *ldb, int *info)
void lapack::cgesv_ (int *n, int *nrhs, void *a, int *lda, int *ipiv, void *b, int *ldb, int *info)
void lapack::zgesv_ (int *n, int *nrhs, void *a, int *lda, int *ipiv, void *b, int *ldb, int *info)
void lapack::sgels_ (char *trans, int *m, int *n, int *nrhs, float *a, int *lda, float *b, int *ldb, float *work, int *lwork, int *info)
void lapack::dgels_ (char *trans, int *m, int *n, int *nrhs, double *a, int *lda, double *b, int *ldb, double *work, int *lwork, int *info)
void lapack::cgels_ (char *trans, int *m, int *n, int *nrhs, void *a, int *lda, void *b, int *ldb, void *work, int *lwork, int *info)
void lapack::zgels_ (char *trans, int *m, int *n, int *nrhs, void *a, int *lda, void *b, int *ldb, void *work, int *lwork, int *info)
template<typename eT >
void lapack::getrf_ (int *m, int *n, eT *a, int *lda, int *ipiv, int *info)
template<typename eT >
void lapack::getri_ (int *n, eT *a, int *lda, int *ipiv, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::syev_ (char *jobz, char *uplo, int *n, eT *a, int *lda, eT *w, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::heev_ (char *jobz, char *uplo, int *n, eT *a, int *lda, typename eT::value_type *w, eT *work, int *lwork, typename eT::value_type *rwork, int *info)
template<typename eT >
void lapack::geev_ (char *jobvl, char *jobvr, int *n, eT *a, int *lda, eT *wr, eT *wi, eT *vl, int *ldvl, eT *vr, int *ldvr, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::cx_geev_ (char *jobvl, char *jobvr, int *n, eT *a, int *lda, eT *w, eT *vl, int *ldvl, eT *vr, int *ldvr, eT *work, int *lwork, typename eT::value_type *rwork, int *info)
template<typename eT >
void lapack::potrf_ (char *uplo, int *n, eT *a, int *lda, int *info)
template<typename eT >
void lapack::geqrf_ (int *m, int *n, eT *a, int *lda, eT *tau, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::orgqr_ (int *m, int *n, int *k, eT *a, int *lda, eT *tau, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::ungqr_ (int *m, int *n, int *k, eT *a, int *lda, eT *tau, eT *work, int *lwork, int *info)
template<typename eT >
void lapack::gesvd_ (char *jobu, char *jobvt, int *m, int *n, eT *a, int *lda, eT *s, eT *u, int *ldu, eT *vt, int *ldvt, eT *work, int *lwork, int *info)
template<typename T >
void lapack::cx_gesvd_ (char *jobu, char *jobvt, int *m, int *n, std::complex< T > *a, int *lda, T *s, std::complex< T > *u, int *ldu, std::complex< T > *vt, int *ldvt, std::complex< T > *work, int *lwork, T *rwork, int *info)
template<typename eT >
void lapack::gesv_ (int *n, int *nrhs, eT *a, int *lda, int *ipiv, eT *b, int *ldb, int *info)
template<typename eT >
void lapack::gels_ (char *trans, int *m, int *n, int *nrhs, eT *a, int *lda, eT *b, int *ldb, eT *work, int *lwork, int *info)

Detailed Description

//!


Function Documentation

void lapack::sgetrf_ ( int *  m,
int *  n,
float *  a,
int *  lda,
int *  ipiv,
int *  info 
)

Referenced by lapack::getrf_().

void lapack::dgetrf_ ( int *  m,
int *  n,
double *  a,
int *  lda,
int *  ipiv,
int *  info 
)

Referenced by lapack::getrf_().

void lapack::cgetrf_ ( int *  m,
int *  n,
void *  a,
int *  lda,
int *  ipiv,
int *  info 
)

Referenced by lapack::getrf_().

void lapack::zgetrf_ ( int *  m,
int *  n,
void *  a,
int *  lda,
int *  ipiv,
int *  info 
)

Referenced by lapack::getrf_().

void lapack::sgetri_ ( int *  n,
float *  a,
int *  lda,
int *  ipiv,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::getri_().

void lapack::dgetri_ ( int *  n,
double *  a,
int *  lda,
int *  ipiv,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::getri_().

void lapack::cgetri_ ( int *  n,
void *  a,
int *  lda,
int *  ipiv,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::getri_().

void lapack::zgetri_ ( int *  n,
void *  a,
int *  lda,
int *  ipiv,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::getri_().

void lapack::ssyev_ ( char *  jobz,
char *  uplo,
int *  n,
float *  a,
int *  lda,
float *  w,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::syev_().

void lapack::dsyev_ ( char *  jobz,
char *  uplo,
int *  n,
double *  a,
int *  lda,
double *  w,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::syev_().

void lapack::cheev_ ( char *  jobz,
char *  uplo,
int *  n,
void *  a,
int *  lda,
float *  w,
void *  work,
int *  lwork,
float *  rwork,
int *  info 
)

Referenced by lapack::heev_().

void lapack::zheev_ ( char *  jobz,
char *  uplo,
int *  n,
void *  a,
int *  lda,
double *  w,
void *  work,
int *  lwork,
double *  rwork,
int *  info 
)

Referenced by lapack::heev_().

void lapack::sgeev_ ( char *  jobvl,
char *  jobvr,
int *  n,
float *  a,
int *  lda,
float *  wr,
float *  wi,
float *  vl,
int *  ldvl,
float *  vr,
int *  ldvr,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geev_().

void lapack::dgeev_ ( char *  jobvl,
char *  jobvr,
int *  n,
double *  a,
int *  lda,
double *  wr,
double *  wi,
double *  vl,
int *  ldvl,
double *  vr,
int *  ldvr,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geev_().

void lapack::cgeev_ ( char *  jobvr,
char *  jobvl,
int *  n,
void *  a,
int *  lda,
void *  w,
void *  vl,
int *  ldvl,
void *  vr,
int *  ldvr,
void *  work,
int *  lwork,
float *  rwork,
int *  info 
)

Referenced by lapack::cx_geev_().

void lapack::zgeev_ ( char *  jobvl,
char *  jobvr,
int *  n,
void *  a,
int *  lda,
void *  w,
void *  vl,
int *  ldvl,
void *  vr,
int *  ldvr,
void *  work,
int *  lwork,
double *  rwork,
int *  info 
)

Referenced by lapack::cx_geev_().

void lapack::spotrf_ ( char *  uplo,
int *  n,
float *  a,
int *  lda,
int *  info 
)

Referenced by lapack::potrf_().

void lapack::dpotrf_ ( char *  uplo,
int *  n,
double *  a,
int *  lda,
int *  info 
)

Referenced by lapack::potrf_().

void lapack::cpotrf_ ( char *  uplo,
int *  n,
void *  a,
int *  lda,
int *  info 
)

Referenced by lapack::potrf_().

void lapack::zpotrf_ ( char *  uplo,
int *  n,
void *  a,
int *  lda,
int *  info 
)

Referenced by lapack::potrf_().

void lapack::sgeqrf_ ( int *  m,
int *  n,
float *  a,
int *  lda,
float *  tau,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geqrf_().

void lapack::dgeqrf_ ( int *  m,
int *  n,
double *  a,
int *  lda,
double *  tau,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geqrf_().

void lapack::cgeqrf_ ( int *  m,
int *  n,
void *  a,
int *  lda,
void *  tau,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geqrf_().

void lapack::zgeqrf_ ( int *  m,
int *  n,
void *  a,
int *  lda,
void *  tau,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::geqrf_().

void lapack::sorgqr_ ( int *  m,
int *  n,
int *  k,
float *  a,
int *  lda,
float *  tau,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::orgqr_().

void lapack::dorgqr_ ( int *  m,
int *  n,
int *  k,
double *  a,
int *  lda,
double *  tau,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::orgqr_().

void lapack::cungqr_ ( int *  m,
int *  n,
int *  k,
void *  a,
int *  lda,
void *  tau,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::ungqr_().

void lapack::zungqr_ ( int *  m,
int *  n,
int *  k,
void *  a,
int *  lda,
void *  tau,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::ungqr_().

void lapack::sgesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
float *  a,
int *  lda,
float *  s,
float *  u,
int *  ldu,
float *  vt,
int *  ldvt,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gesvd_().

void lapack::dgesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
double *  a,
int *  lda,
double *  s,
double *  u,
int *  ldu,
double *  vt,
int *  ldvt,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gesvd_().

void lapack::cgesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
void *  a,
int *  lda,
float *  s,
void *  u,
int *  ldu,
void *  vt,
int *  ldvt,
void *  work,
int *  lwork,
float *  rwork,
int *  info 
)

Referenced by lapack::cx_gesvd_().

void lapack::zgesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
void *  a,
int *  lda,
double *  s,
void *  u,
int *  ldu,
void *  vt,
int *  ldvt,
void *  work,
int *  lwork,
double *  rwork,
int *  info 
)

Referenced by lapack::cx_gesvd_().

void lapack::sgesv_ ( int *  n,
int *  nrhs,
float *  a,
int *  lda,
int *  ipiv,
float *  b,
int *  ldb,
int *  info 
)

Referenced by lapack::gesv_().

void lapack::dgesv_ ( int *  n,
int *  nrhs,
double *  a,
int *  lda,
int *  ipiv,
double *  b,
int *  ldb,
int *  info 
)

Referenced by lapack::gesv_().

void lapack::cgesv_ ( int *  n,
int *  nrhs,
void *  a,
int *  lda,
int *  ipiv,
void *  b,
int *  ldb,
int *  info 
)

Referenced by lapack::gesv_().

void lapack::zgesv_ ( int *  n,
int *  nrhs,
void *  a,
int *  lda,
int *  ipiv,
void *  b,
int *  ldb,
int *  info 
)

Referenced by lapack::gesv_().

void lapack::sgels_ ( char *  trans,
int *  m,
int *  n,
int *  nrhs,
float *  a,
int *  lda,
float *  b,
int *  ldb,
float *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gels_().

void lapack::dgels_ ( char *  trans,
int *  m,
int *  n,
int *  nrhs,
double *  a,
int *  lda,
double *  b,
int *  ldb,
double *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gels_().

void lapack::cgels_ ( char *  trans,
int *  m,
int *  n,
int *  nrhs,
void *  a,
int *  lda,
void *  b,
int *  ldb,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gels_().

void lapack::zgels_ ( char *  trans,
int *  m,
int *  n,
int *  nrhs,
void *  a,
int *  lda,
void *  b,
int *  ldb,
void *  work,
int *  lwork,
int *  info 
)

Referenced by lapack::gels_().

template<typename eT >
void lapack::getrf_ ( int *  m,
int *  n,
eT *  a,
int *  lda,
int *  ipiv,
int *  info 
) [inline]

Definition at line 107 of file lapack_proto.hpp.

References lapack::cgetrf_(), lapack::dgetrf_(), lapack::sgetrf_(), and lapack::zgetrf_().

Referenced by auxlib::det(), auxlib::inv_inplace(), auxlib::inv_noalias(), auxlib::log_det(), and auxlib::lu().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgetrf_(m, n, (T*)a, lda, ipiv, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgetrf_(m, n, (T*)a, lda, ipiv, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgetrf_(m, n, (T*)a, lda, ipiv, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgetrf_(m, n, (T*)a, lda, ipiv, info);
      }
    }

template<typename eT >
void lapack::getri_ ( int *  n,
eT *  a,
int *  lda,
int *  ipiv,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 141 of file lapack_proto.hpp.

References lapack::cgetri_(), lapack::dgetri_(), lapack::sgetri_(), and lapack::zgetri_().

Referenced by auxlib::inv_inplace(), and auxlib::inv_noalias().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
      }
    }

template<typename eT >
void lapack::syev_ ( char *  jobz,
char *  uplo,
int *  n,
eT *  a,
int *  lda,
eT *  w,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 175 of file lapack_proto.hpp.

References lapack::dsyev_(), and lapack::ssyev_().

Referenced by auxlib::eig_sym().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      ssyev_(jobz, uplo, n, (T*)a, lda, (T*)w, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dsyev_(jobz, uplo, n, (T*)a, lda, (T*)w, (T*)work, lwork, info);
      }
    }

template<typename eT >
void lapack::heev_ ( char *  jobz,
char *  uplo,
int *  n,
eT *  a,
int *  lda,
typename eT::value_type *  w,
eT *  work,
int *  lwork,
typename eT::value_type *  rwork,
int *  info 
) [inline]

Definition at line 198 of file lapack_proto.hpp.

References lapack::cheev_(), and lapack::zheev_().

Referenced by auxlib::eig_sym().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef float T;
      typedef typename std::complex<T> cx_T;
      cheev_(jobz, uplo, n, (cx_T*)a, lda, (T*)w, (cx_T*)work, lwork, (T*)rwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef double T;
      typedef typename std::complex<T> cx_T;
      zheev_(jobz, uplo, n, (cx_T*)a, lda, (T*)w, (cx_T*)work, lwork, (T*)rwork, info);
      }
    }

template<typename eT >
void lapack::geev_ ( char *  jobvl,
char *  jobvr,
int *  n,
eT *  a,
int *  lda,
eT *  wr,
eT *  wi,
eT *  vl,
int *  ldvl,
eT *  vr,
int *  ldvr,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 227 of file lapack_proto.hpp.

References lapack::dgeev_(), and lapack::sgeev_().

Referenced by auxlib::eig_gen().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();

    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgeev_(jobvl, jobvr, n,  (T*)a, lda, (T*)wr, (T*)wi, (T*)vl, ldvl, (T*)vr, ldvr, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgeev_(jobvl, jobvr, n,  (T*)a, lda, (T*)wr, (T*)wi, (T*)vl, ldvl, (T*)vr, ldvr, (T*)work, lwork, info);
      }
    }

template<typename eT >
void lapack::cx_geev_ ( char *  jobvl,
char *  jobvr,
int *  n,
eT *  a,
int *  lda,
eT *  w,
eT *  vl,
int *  ldvl,
eT *  vr,
int *  ldvr,
eT *  work,
int *  lwork,
typename eT::value_type *  rwork,
int *  info 
) [inline]

Definition at line 255 of file lapack_proto.hpp.

References lapack::cgeev_(), and lapack::zgeev_().

Referenced by auxlib::eig_gen().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef float T;
      typedef typename std::complex<T> cx_T;
      cgeev_(jobvl, jobvr, n, (cx_T*)a, lda, (cx_T*)w, (cx_T*)vl, ldvl, (cx_T*)vr, ldvr, (cx_T*)work, lwork, (T*)rwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef double T;
      typedef typename std::complex<T> cx_T;
      zgeev_(jobvl, jobvr, n, (cx_T*)a, lda, (cx_T*)w, (cx_T*)vl, ldvl, (cx_T*)vr, ldvr, (cx_T*)work, lwork, (T*)rwork, info);
      }
    }

template<typename eT >
void lapack::potrf_ ( char *  uplo,
int *  n,
eT *  a,
int *  lda,
int *  info 
) [inline]

Definition at line 287 of file lapack_proto.hpp.

References lapack::cpotrf_(), lapack::dpotrf_(), lapack::spotrf_(), and lapack::zpotrf_().

Referenced by auxlib::chol().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      spotrf_(uplo, n, (T*)a, lda, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dpotrf_(uplo, n, (T*)a, lda, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cpotrf_(uplo, n, (T*)a, lda, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zpotrf_(uplo, n, (T*)a, lda, info);
      }
    
    }

template<typename eT >
void lapack::geqrf_ ( int *  m,
int *  n,
eT *  a,
int *  lda,
eT *  tau,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 322 of file lapack_proto.hpp.

References lapack::cgeqrf_(), lapack::dgeqrf_(), lapack::sgeqrf_(), and lapack::zgeqrf_().

Referenced by auxlib::qr().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    
    }

template<typename eT >
void lapack::orgqr_ ( int *  m,
int *  n,
int *  k,
eT *  a,
int *  lda,
eT *  tau,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 357 of file lapack_proto.hpp.

References lapack::dorgqr_(), and lapack::sorgqr_().

Referenced by auxlib::qr().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sorgqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dorgqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    }

template<typename eT >
void lapack::ungqr_ ( int *  m,
int *  n,
int *  k,
eT *  a,
int *  lda,
eT *  tau,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 379 of file lapack_proto.hpp.

References lapack::cungqr_(), and lapack::zungqr_().

Referenced by auxlib::qr().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef float T;
      cungqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef double T;
      zungqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
      }
    }

template<typename eT >
void lapack::gesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
eT *  a,
int *  lda,
eT *  s,
eT *  u,
int *  ldu,
eT *  vt,
int *  ldvt,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 401 of file lapack_proto.hpp.

References lapack::dgesvd_(), and lapack::sgesvd_().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgesvd_(jobu, jobvt, m, n, (T*)a, lda, (T*)s, (T*)u, ldu, (T*)vt, ldvt, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgesvd_(jobu, jobvt, m, n, (T*)a, lda, (T*)s, (T*)u, ldu, (T*)vt, ldvt, (T*)work, lwork, info);
      }
    }

template<typename T >
void lapack::cx_gesvd_ ( char *  jobu,
char *  jobvt,
int *  m,
int *  n,
std::complex< T > *  a,
int *  lda,
T *  s,
std::complex< T > *  u,
int *  ldu,
std::complex< T > *  vt,
int *  ldvt,
std::complex< T > *  work,
int *  lwork,
T *  rwork,
int *  info 
) [inline]

Definition at line 428 of file lapack_proto.hpp.

References lapack::cgesvd_(), and lapack::zgesvd_().

    {
    arma_type_check<is_supported_blas_type<T>::value == false>::apply();
    arma_type_check<is_supported_blas_type< std::complex<T> >::value == false>::apply();
    
    if(is_float<T>::value == true)
      {
      typedef float bT;
      cgesvd_
        (
        jobu, jobvt, m, n, (std::complex<bT>*)a, lda,
        (bT*)s, (std::complex<bT>*)u, ldu, (std::complex<bT>*)vt, ldvt,
        (std::complex<bT>*)work, lwork, (bT*)rwork, info
        );
      }
    else
    if(is_double<T>::value == true)
      {
      typedef double bT;
      zgesvd_
        (
        jobu, jobvt, m, n, (std::complex<bT>*)a, lda,
        (bT*)s, (std::complex<bT>*)u, ldu, (std::complex<bT>*)vt, ldvt,
        (std::complex<bT>*)work, lwork, (bT*)rwork, info
        );
      }
    }

template<typename eT >
void lapack::gesv_ ( int *  n,
int *  nrhs,
eT *  a,
int *  lda,
int *  ipiv,
eT *  b,
int *  ldb,
int *  info 
) [inline]

Definition at line 465 of file lapack_proto.hpp.

References lapack::cgesv_(), lapack::dgesv_(), lapack::sgesv_(), and lapack::zgesv_().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
      }
    }

template<typename eT >
void lapack::gels_ ( char *  trans,
int *  m,
int *  n,
int *  nrhs,
eT *  a,
int *  lda,
eT *  b,
int *  ldb,
eT *  work,
int *  lwork,
int *  info 
) [inline]

Definition at line 500 of file lapack_proto.hpp.

References lapack::cgels_(), lapack::dgels_(), lapack::sgels_(), and lapack::zgels_().

    {
    arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
    
    if(is_float<eT>::value == true)
      {
      typedef float T;
      sgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
      }
    else
    if(is_double<eT>::value == true)
      {
      typedef double T;
      dgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_float<eT>::value == true)
      {
      typedef std::complex<float> T;
      cgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
      }
    else
    if(is_supported_complex_double<eT>::value == true)
      {
      typedef std::complex<double> T;
      zgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
      }
    }