LAPACK

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)

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().

00108     {
00109     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00110     
00111     if(is_float<eT>::value == true)
00112       {
00113       typedef float T;
00114       sgetrf_(m, n, (T*)a, lda, ipiv, info);
00115       }
00116     else
00117     if(is_double<eT>::value == true)
00118       {
00119       typedef double T;
00120       dgetrf_(m, n, (T*)a, lda, ipiv, info);
00121       }
00122     else
00123     if(is_supported_complex_float<eT>::value == true)
00124       {
00125       typedef std::complex<float> T;
00126       cgetrf_(m, n, (T*)a, lda, ipiv, info);
00127       }
00128     else
00129     if(is_supported_complex_double<eT>::value == true)
00130       {
00131       typedef std::complex<double> T;
00132       zgetrf_(m, n, (T*)a, lda, ipiv, info);
00133       }
00134     }

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().

00142     {
00143     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00144     
00145     if(is_float<eT>::value == true)
00146       {
00147       typedef float T;
00148       sgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
00149       }
00150     else
00151     if(is_double<eT>::value == true)
00152       {
00153       typedef double T;
00154       dgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
00155       }
00156     else
00157     if(is_supported_complex_float<eT>::value == true)
00158       {
00159       typedef std::complex<float> T;
00160       cgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
00161       }
00162     else
00163     if(is_supported_complex_double<eT>::value == true)
00164       {
00165       typedef std::complex<double> T;
00166       zgetri_(n, (T*)a, lda, ipiv, (T*)work, lwork, info);
00167       }
00168     }

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().

00176     {
00177     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00178     
00179     if(is_float<eT>::value == true)
00180       {
00181       typedef float T;
00182       ssyev_(jobz, uplo, n, (T*)a, lda, (T*)w, (T*)work, lwork, info);
00183       }
00184     else
00185     if(is_double<eT>::value == true)
00186       {
00187       typedef double T;
00188       dsyev_(jobz, uplo, n, (T*)a, lda, (T*)w, (T*)work, lwork, info);
00189       }
00190     }

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().

00204     {
00205     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00206     
00207     if(is_supported_complex_float<eT>::value == true)
00208       {
00209       typedef float T;
00210       typedef typename std::complex<T> cx_T;
00211       cheev_(jobz, uplo, n, (cx_T*)a, lda, (T*)w, (cx_T*)work, lwork, (T*)rwork, info);
00212       }
00213     else
00214     if(is_supported_complex_double<eT>::value == true)
00215       {
00216       typedef double T;
00217       typedef typename std::complex<T> cx_T;
00218       zheev_(jobz, uplo, n, (cx_T*)a, lda, (T*)w, (cx_T*)work, lwork, (T*)rwork, info);
00219       }
00220     }

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().

00234     {
00235     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00236 
00237     if(is_float<eT>::value == true)
00238       {
00239       typedef float T;
00240       sgeev_(jobvl, jobvr, n,  (T*)a, lda, (T*)wr, (T*)wi, (T*)vl, ldvl, (T*)vr, ldvr, (T*)work, lwork, info);
00241       }
00242     else
00243     if(is_double<eT>::value == true)
00244       {
00245       typedef double T;
00246       dgeev_(jobvl, jobvr, n,  (T*)a, lda, (T*)wr, (T*)wi, (T*)vl, ldvl, (T*)vr, ldvr, (T*)work, lwork, info);
00247       }
00248     }

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().

00263     {
00264     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00265     
00266     if(is_supported_complex_float<eT>::value == true)
00267       {
00268       typedef float T;
00269       typedef typename std::complex<T> cx_T;
00270       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);
00271       }
00272     else
00273     if(is_supported_complex_double<eT>::value == true)
00274       {
00275       typedef double T;
00276       typedef typename std::complex<T> cx_T;
00277       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);
00278       }
00279     }

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().

00288     {
00289     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00290     
00291     if(is_float<eT>::value == true)
00292       {
00293       typedef float T;
00294       spotrf_(uplo, n, (T*)a, lda, info);
00295       }
00296     else
00297     if(is_double<eT>::value == true)
00298       {
00299       typedef double T;
00300       dpotrf_(uplo, n, (T*)a, lda, info);
00301       }
00302     else
00303     if(is_supported_complex_float<eT>::value == true)
00304       {
00305       typedef std::complex<float> T;
00306       cpotrf_(uplo, n, (T*)a, lda, info);
00307       }
00308     else
00309     if(is_supported_complex_double<eT>::value == true)
00310       {
00311       typedef std::complex<double> T;
00312       zpotrf_(uplo, n, (T*)a, lda, info);
00313       }
00314     
00315     }

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().

00323     {
00324     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00325     
00326     if(is_float<eT>::value == true)
00327       {
00328       typedef float T;
00329       sgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00330       }
00331     else
00332     if(is_double<eT>::value == true)
00333       {
00334       typedef double T;
00335       dgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00336       }
00337     else
00338     if(is_supported_complex_float<eT>::value == true)
00339       {
00340       typedef std::complex<float> T;
00341       cgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00342       }
00343     else
00344     if(is_supported_complex_double<eT>::value == true)
00345       {
00346       typedef std::complex<double> T;
00347       zgeqrf_(m, n, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00348       }
00349     
00350     }

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().

00358     {
00359     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00360     
00361     if(is_float<eT>::value == true)
00362       {
00363       typedef float T;
00364       sorgqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00365       }
00366     else
00367     if(is_double<eT>::value == true)
00368       {
00369       typedef double T;
00370       dorgqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00371       }
00372     }

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().

00380     {
00381     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00382     
00383     if(is_supported_complex_float<eT>::value == true)
00384       {
00385       typedef float T;
00386       cungqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00387       }
00388     else
00389     if(is_supported_complex_double<eT>::value == true)
00390       {
00391       typedef double T;
00392       zungqr_(m, n, k, (T*)a, lda, (T*)tau, (T*)work, lwork, info);
00393       }
00394     }

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_().

00406     {
00407     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00408     
00409     if(is_float<eT>::value == true)
00410       {
00411       typedef float T;
00412       sgesvd_(jobu, jobvt, m, n, (T*)a, lda, (T*)s, (T*)u, ldu, (T*)vt, ldvt, (T*)work, lwork, info);
00413       }
00414     else
00415     if(is_double<eT>::value == true)
00416       {
00417       typedef double T;
00418       dgesvd_(jobu, jobvt, m, n, (T*)a, lda, (T*)s, (T*)u, ldu, (T*)vt, ldvt, (T*)work, lwork, info);
00419       }
00420     }

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_().

00433     {
00434     arma_type_check<is_supported_blas_type<T>::value == false>::apply();
00435     arma_type_check<is_supported_blas_type< std::complex<T> >::value == false>::apply();
00436     
00437     if(is_float<T>::value == true)
00438       {
00439       typedef float bT;
00440       cgesvd_
00441         (
00442         jobu, jobvt, m, n, (std::complex<bT>*)a, lda,
00443         (bT*)s, (std::complex<bT>*)u, ldu, (std::complex<bT>*)vt, ldvt,
00444         (std::complex<bT>*)work, lwork, (bT*)rwork, info
00445         );
00446       }
00447     else
00448     if(is_double<T>::value == true)
00449       {
00450       typedef double bT;
00451       zgesvd_
00452         (
00453         jobu, jobvt, m, n, (std::complex<bT>*)a, lda,
00454         (bT*)s, (std::complex<bT>*)u, ldu, (std::complex<bT>*)vt, ldvt,
00455         (std::complex<bT>*)work, lwork, (bT*)rwork, info
00456         );
00457       }
00458     }

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_().

00466     {
00467     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00468     
00469     if(is_float<eT>::value == true)
00470       {
00471       typedef float T;
00472       sgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
00473       }
00474     else
00475     if(is_double<eT>::value == true)
00476       {
00477       typedef double T;
00478       dgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
00479       }
00480     else
00481     if(is_supported_complex_float<eT>::value == true)
00482       {
00483       typedef std::complex<float> T;
00484       cgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
00485       }
00486     else
00487     if(is_supported_complex_double<eT>::value == true)
00488       {
00489       typedef std::complex<double> T;
00490       zgesv_(n, nrhs, (T*)a, lda, ipiv, (T*)b, ldb, info);
00491       }
00492     }

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_().

00501     {
00502     arma_type_check<is_supported_blas_type<eT>::value == false>::apply();
00503     
00504     if(is_float<eT>::value == true)
00505       {
00506       typedef float T;
00507       sgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
00508       }
00509     else
00510     if(is_double<eT>::value == true)
00511       {
00512       typedef double T;
00513       dgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
00514       }
00515     else
00516     if(is_supported_complex_float<eT>::value == true)
00517       {
00518       typedef std::complex<float> T;
00519       cgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
00520       }
00521     else
00522     if(is_supported_complex_double<eT>::value == true)
00523       {
00524       typedef std::complex<double> T;
00525       zgels_(trans, m, n, nrhs, (T*)a, lda, (T*)b, ldb, (T*)work, lwork, info);
00526       }
00527     }