BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
fn_gesvd.hpp File Reference

Singular value decomposition A = U * diag(S) * VT (LAPACK ?gesvd). More...

#include "assert.hpp"
#include "lapacktools.hpp"
#include "cl_Vector.hpp"
Include dependency graph for fn_gesvd.hpp:

Go to the source code of this file.

Namespaces

namespace  belfem
 USER GUIDES:
namespace  belfem::lapack

Functions

void belfem::lapack::sgesvd_ (char *jobu, char *jobvt, int_t *m, int_t *n, float *a, int_t *lda, float *s, float *u, int_t *ldu, float *vt, int_t *ldvt, float *work, int_t *lwork, int_t *info, fortran_charlen_t lu, fortran_charlen_t lvt)
void belfem::lapack::dgesvd_ (char *jobu, char *jobvt, int_t *m, int_t *n, double *a, int_t *lda, double *s, double *u, int_t *ldu, double *vt, int_t *ldvt, double *work, int_t *lwork, int_t *info, fortran_charlen_t lu, fortran_charlen_t lvt)
void belfem::lapack::cgesvd_ (char *jobu, char *jobvt, int_t *m, int_t *n, cplx_float_t *a, int_t *lda, float *s, cplx_float_t *u, int_t *ldu, cplx_float_t *vt, int_t *ldvt, cplx_float_t *work, int_t *lwork, float *rwork, int_t *info, fortran_charlen_t lu, fortran_charlen_t lvt)
void belfem::lapack::zgesvd_ (char *jobu, char *jobvt, int_t *m, int_t *n, cplx_double_t *a, int_t *lda, double *s, cplx_double_t *u, int_t *ldu, cplx_double_t *vt, int_t *ldvt, cplx_double_t *work, int_t *lwork, double *rwork, int_t *info, fortran_charlen_t lu, fortran_charlen_t lvt)
template<typename T>
void belfem::lapack::gesvd (const char *jobu, const char *jobvt, const int_t *m, const int_t *n, T *a, const int_t *lda, real_t< T > *s, T *u, const int_t *ldu, T *vt, const int_t *ldvt, T *work, const int_t *lwork, real_t< T > *rwork, int_t *info)
template<>
void belfem::lapack::gesvd (const char *jobu, const char *jobvt, const int_t *m, const int_t *n, float *a, const int_t *lda, float *s, float *u, const int_t *ldu, float *vt, const int_t *ldvt, float *work, const int_t *lwork, float *, int_t *info)
template<>
void belfem::lapack::gesvd (const char *jobu, const char *jobvt, const int_t *m, const int_t *n, double *a, const int_t *lda, double *s, double *u, const int_t *ldu, double *vt, const int_t *ldvt, double *work, const int_t *lwork, double *, int_t *info)
template<>
void belfem::lapack::gesvd (const char *jobu, const char *jobvt, const int_t *m, const int_t *n, std::complex< float > *a, const int_t *lda, float *s, std::complex< float > *u, const int_t *ldu, std::complex< float > *vt, const int_t *ldvt, std::complex< float > *work, const int_t *lwork, float *rwork, int_t *info)
template<>
void belfem::lapack::gesvd (const char *jobu, const char *jobvt, const int_t *m, const int_t *n, std::complex< double > *a, const int_t *lda, double *s, std::complex< double > *u, const int_t *ldu, std::complex< double > *vt, const int_t *ldvt, std::complex< double > *work, const int_t *lwork, double *rwork, int_t *info)
template<typename T>
int_t belfem::gesvd (Matrix< T > &A, Vector< lapack::real_t< T > > &S, Matrix< T > &U, Matrix< T > &VT, Vector< lapack::real_t< T > > &Work, const char jobu='A', const char jobvt='A', const bool AbortOnError=true)
 singular value decomposition A = U * diag( S ) * VT via LAPACK ?gesvd

Detailed Description

Singular value decomposition A = U * diag(S) * VT (LAPACK ?gesvd).

Thin wrapper over the Fortran routine: BELFEM containers are passed straight through after their leading dimensions are worked out. Arguments are not copied – see each parameter for what is overwritten in place.