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 106 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(), and auxlib::lu().

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

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

Definition at line 140 of file lapack_proto.hpp.

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

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

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

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 174 of file lapack_proto.hpp.

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

Referenced by auxlib::eig_sym().

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

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 197 of file lapack_proto.hpp.

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

Referenced by auxlib::eig_sym().

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

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 226 of file lapack_proto.hpp.

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

Referenced by auxlib::eig_gen().

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

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 254 of file lapack_proto.hpp.

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

Referenced by auxlib::eig_gen().

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

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

Definition at line 286 of file lapack_proto.hpp.

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

Referenced by auxlib::chol().

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

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 321 of file lapack_proto.hpp.

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

Referenced by auxlib::qr().

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

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 356 of file lapack_proto.hpp.

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

Referenced by auxlib::qr().

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

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 378 of file lapack_proto.hpp.

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

Referenced by auxlib::qr().

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

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 400 of file lapack_proto.hpp.

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

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

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 427 of file lapack_proto.hpp.

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

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

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 464 of file lapack_proto.hpp.

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

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

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 499 of file lapack_proto.hpp.

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

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