14EIGEN_LAPACK_FUNC(gesdd,(
char *jobz,
int *
m,
int*
n,
Scalar*
a,
int *
lda,
RealScalar *
s,
Scalar *u,
int *ldu,
Scalar *vt,
int *ldvt,
Scalar* ,
int* lwork,
18 bool query_size = *lwork==-1;
19 int diag_size = (std::min)(*
m,*
n);
22 if(*jobz!=
'A' && *jobz!=
'S' && *jobz!=
'O' && *jobz!=
'N') *
info = -1;
23 else if(*
m<0) *
info = -2;
24 else if(*
n<0) *
info = -3;
25 else if(*
lda<std::max(1,*
m)) *
info = -5;
26 else if(*
lda<std::max(1,*
m)) *
info = -8;
27 else if(*ldu <1 || (*jobz==
'A' && *ldu <*
m)
28 || (*jobz==
'O' && *
m<*
n && *ldu<*
m)) *
info = -8;
29 else if(*ldvt<1 || (*jobz==
'A' && *ldvt<*
n)
30 || (*jobz==
'S' && *ldvt<diag_size)
31 || (*jobz==
'O' && *
m>=*
n && *ldvt<*
n)) *
info = -10;
68 matrix(vt,diag_size,*
n,*ldvt) =
svd.matrixV().adjoint();
70 else if(*jobz==
'O' && *
m>=*
n)
85EIGEN_LAPACK_FUNC(gesvd,(
char *jobu,
char *jobv,
int *
m,
int*
n,
Scalar*
a,
int *
lda,
RealScalar *
s,
Scalar *u,
int *ldu,
Scalar *vt,
int *ldvt,
Scalar* ,
int* lwork,
89 bool query_size = *lwork==-1;
90 int diag_size = (std::min)(*
m,*
n);
93 if( *jobu!=
'A' && *jobu!=
'S' && *jobu!=
'O' && *jobu!=
'N') *
info = -1;
94 else if((*jobv!=
'A' && *jobv!=
'S' && *jobv!=
'O' && *jobv!=
'N')
95 || (*jobu==
'O' && *jobv==
'O')) *
info = -2;
96 else if(*
m<0) *
info = -3;
97 else if(*
n<0) *
info = -4;
98 else if(*
lda<std::max(1,*
m)) *
info = -6;
99 else if(*ldu <1 || ((*jobu==
'A' || *jobu==
'S') && *ldu<*
m)) *
info = -9;
100 else if(*ldvt<1 || (*jobv==
'A' && *ldvt<*
n)
101 || (*jobv==
'S' && *ldvt<diag_size)) *
info = -11;
128 if(*jobu==
'A')
matrix(u,*
m,*
m,*ldu) =
svd.matrixU();
129 else if(*jobu==
'S')
matrix(u,*
m,diag_size,*ldu) =
svd.matrixU();
133 if(*jobv==
'A')
matrix(vt,*
n,*
n,*ldvt) =
svd.matrixV().adjoint();
134 else if(*jobv==
'S')
matrix(vt,diag_size,*
n,*ldvt) =
svd.matrixV().adjoint();
135 else if(*jobv==
'O')
matrix(
a,diag_size,*
n,*
lda) =
svd.matrixV().adjoint();
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
ArrayXXi a
Definition Array_initializer_list_23_cxx11.cpp:1
int n
Definition BiCGSTAB_simple.cpp:1
Array< double, 1, 3 > e(1./3., 0.5, 2.)
cout<< "Here is the matrix m:"<< endl<< m<< endl;JacobiSVD< MatrixXf > svd(m, ComputeThinU|ComputeThinV)
MatrixXf mat
Definition Tutorial_AdvancedInitialization_CommaTemporary.cpp:1
SCALAR Scalar
Definition bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition bench_gemm.cpp:47
#define SCALAR_SUFFIX_UP
Definition complex_double.cpp:12
class Bidiagonal Divide and Conquer SVD
Definition BDCSVD.h:74
Two-sided Jacobi SVD decomposition of a rectangular matrix.
Definition JacobiSVD.h:490
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition common.h:110
Map< Matrix< T, Dynamic, 1 >, 0, InnerStride< Dynamic > > make_vector(T *data, int size, int incr)
Definition common.h:123
* lda
Definition eigenvalues.cpp:59
@ ComputeFullV
Definition Constants.h:397
@ ComputeThinV
Definition Constants.h:399
@ ComputeFullU
Definition Constants.h:393
@ ComputeThinU
Definition Constants.h:395
else if n * info
Definition cholesky.cpp:18
#define EIGEN_LAPACK_FUNC(FUNC, ARGLIST)
Definition lapack_common.h:16
#define EIGEN_LAPACK_ARG_IF_COMPLEX(X)
Definition lapack_common.h:23
RealScalar s
Definition level1_cplx_impl.h:126
EIGEN_WEAK_LINKING int xerbla_(const char *msg, int *info, int)
Definition xerbla.cpp:15