35#ifndef _BLAZE_MATH_DENSE_SVD_H_
36#define _BLAZE_MATH_DENSE_SVD_H_
67template<
typename MT,
bool SO,
typename VT,
bool TF >
68inline void svd(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& s );
70template<
typename MT1,
bool SO,
typename VT,
bool TF,
typename MT2,
typename MT3 >
71inline void svd(
const DenseMatrix<MT1,SO>& A, DenseMatrix<MT2,SO>& U,
72 DenseVector<VT,TF>& s, DenseMatrix<MT3,SO>& V,
bool square =
false );
74template<
typename MT,
bool SO,
typename VT,
bool TF,
typename ST >
75inline size_t svd(
const DenseMatrix<MT,SO>& A, DenseVector<VT,TF>& s, ST low, ST upp );
77template<
typename MT1,
bool SO,
typename VT,
bool TF,
typename MT2,
typename MT3,
typename ST >
78inline size_t svd(
const DenseMatrix<MT1,SO>& A, DenseMatrix<MT2,SO>& U,
79 DenseVector<VT,TF>& s, DenseMatrix<MT3,SO>& V, ST low, ST upp );
157 if( !IsContiguous_v<VT> ) {
222template<
typename MT1
263 gesdd( Atmp, Utmp, stmp, Vtmp, (square) ?
'A' :
'S' );
265 if( !IsContiguous_v<MT2> ) {
269 if( !IsContiguous_v<VT> ) {
273 if( !IsContiguous_v<MT3> ) {
369 const auto num =
gesvdx( Atmp, stmp, low, upp );
371 if( !IsContiguous_v<VT> ) {
458template<
typename MT1
502 const auto num =
gesvdx( Atmp, Utmp, stmp, Vtmp, low, upp );
504 if( !IsContiguous_v<MT2> ) {
508 if( !IsContiguous_v<VT> ) {
512 if( !IsContiguous_v<MT3> ) {
Constraint on the data type.
typename T::ResultType ResultType_t
Alias declaration for nested ResultType type definitions.
Definition: Aliases.h:450
typename T::ElementType ElementType_t
Alias declaration for nested ElementType type definitions.
Definition: Aliases.h:190
Constraint on the data type.
Header file for the If class template.
Header file for the IsContiguous type trait.
Constraint on the data type.
Header file for the RemoveAdaptor type trait.
Base class for dense matrices.
Definition: DenseMatrix.h:82
Base class for N-dimensional dense vectors.
Definition: DenseVector.h:77
Constraint on the data type.
Header file for the DenseMatrix base class.
Header file for the DenseVector base class.
Header file for the LAPACK singular value decomposition functions (gesdd)
Header file for the LAPACK singular value decomposition functions (gesvdx)
#define BLAZE_CONSTRAINT_MUST_BE_BUILTIN_TYPE(T)
Constraint on the data type.
Definition: Builtin.h:60
size_t svd(const DenseMatrix< MT1, SO > &A, DenseMatrix< MT2, SO > &U, DenseVector< VT, TF > &s, DenseMatrix< MT3, SO > &V, ST low, ST upp)
Singular value decomposition (SVD) of the given dense general matrix.
Definition: SVD.h:465
void gesdd(char jobz, blas_int_t m, blas_int_t n, float *A, blas_int_t lda, float *s, float *U, blas_int_t ldu, float *V, blas_int_t ldv, float *work, blas_int_t lwork, blas_int_t *iwork, blas_int_t *info)
LAPACK kernel for the singular value decomposition (SVD) of the given dense general single precision ...
Definition: gesdd.h:185
void gesvdx(char jobu, char jobv, char range, blas_int_t m, blas_int_t n, float *A, blas_int_t lda, float vl, float vu, blas_int_t il, blas_int_t iu, blas_int_t *ns, float *s, float *U, blas_int_t ldu, float *V, blas_int_t ldv, float *work, blas_int_t lwork, blas_int_t *iwork, blas_int_t *info)
LAPACK kernel for the singular value decomposition (SVD) of the given dense general single precision ...
Definition: gesvdx.h:213
#define BLAZE_CONSTRAINT_MUST_BE_BLAS_COMPATIBLE_TYPE(T)
Constraint on the data type.
Definition: BLASCompatible.h:61
#define BLAZE_CONSTRAINT_MUST_NOT_BE_COMPUTATION_TYPE(T)
Constraint on the data type.
Definition: Computation.h:81
#define BLAZE_CONSTRAINT_MUST_NOT_BE_ADAPTOR_TYPE(T)
Constraint on the data type.
Definition: Adaptor.h:81
#define BLAZE_CONSTRAINT_MUST_HAVE_MUTABLE_DATA_ACCESS(T)
Constraint on the data type.
Definition: MutableDataAccess.h:61
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108