28 #ifndef _nmrSVDSolver_h
29 #define _nmrSVDSolver_h
93 CISSTNETLIB_INTEGER
M;
94 CISSTNETLIB_INTEGER
N;
95 CISSTNETLIB_INTEGER
Lda;
96 CISSTNETLIB_INTEGER
Ldu;
128 CISSTNETLIB_INTEGER n,
144 template <
class _matrixOwnerType>
146 CISSTNETLIB_DOUBLE> &A)
169 CISSTNETLIB_INTEGER n,
171 const CISSTNETLIB_INTEGER one = 1;
180 Lda = std::max(one,
M);
183 Lwork = std::max(3 * std::min(
M,
N) + std::max(
M,
N),
201 template <
class _matrixOwnerType>
204 CISSTNETLIB_DOUBLE>& A)
205 {
Allocate(A.rows(), A.cols(), A.IsRowMajor()); }
215 {
Allocate(_rows, _cols, _storageOrder); }
230 template <
class _matrixOwnerType>
233 CISSTNETLIB_DOUBLE> &A)
234 throw (std::runtime_error){
240 cmnThrow(std::runtime_error(
"nmrSVDSolver Solve: Storage order used for Allocate was different"));
248 if (A.IsColMajor()) {
249 if ((
M != static_cast<CISSTNETLIB_INTEGER>(A.rows())) ||
250 (
N !=
static_cast<CISSTNETLIB_INTEGER
>(A.cols()))) {
251 cmnThrow(std::runtime_error(
"nmrSVDSolver Solve: Size used for Allocate was different"));
254 else if (A.IsRowMajor()) {
255 if ((
M != static_cast<CISSTNETLIB_INTEGER>(A.cols())) ||
256 (
N !=
static_cast<CISSTNETLIB_INTEGER
>(A.rows()))) {
257 cmnThrow(std::runtime_error(
"nmrSVDSolver Solve: Size used for Allocate was different"));
262 if (! A.IsCompact()) {
263 cmnThrow(std::runtime_error(
"nmrSVDSolver Solve: Requires a compact matrix"));
299 #ifdef CISST_COMPILER_IS_MSVC
301 #endif // CISST_COMPILER_IS_MSVC
304 #endif // _nmrSVDSolver_h
CISSTNETLIB_INTEGER M
Definition: nmrSVDSolver.h:93
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetVt(void) const
Definition: nmrSVDSolver.h:294
char Jobvt
Definition: nmrSVDSolver.h:100
Declaration of vctDynamicMatrix.
Definition: vctDynamicMatrixBase.h:42
#define CISST_DEPRECATED
Definition: cmnPortability.h:310
CISSTNETLIB_INTEGER Ldvt
Definition: nmrSVDSolver.h:97
vctDynamicMatrix< CISSTNETLIB_DOUBLE > S
Definition: nmrSVDSolver.h:101
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetS(void) const
Definition: nmrSVDSolver.h:288
size_t size_type
Definition: vctContainerTraits.h:35
bool StorageOrder
Definition: nmrSVDSolver.h:106
void Solve(vctFixedSizeMatrix< CISSTNETLIB_DOUBLE, _rows, _cols, _storageOrder > &A)
Definition: nmrSVDSolver.h:278
CISSTNETLIB_INTEGER Lda
Definition: nmrSVDSolver.h:95
void Allocate(const vctDynamicMatrixBase< _matrixOwnerType, CISSTNETLIB_DOUBLE > &A)
Definition: nmrSVDSolver.h:203
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, bool storageOrder)
Definition: nmrSVDSolver.h:168
nmrSVDSolver(void)
Definition: nmrSVDSolver.h:113
CISSTNETLIB_INTEGER Lwork
Definition: nmrSVDSolver.h:98
CISSTNETLIB_INTEGER Info
Definition: nmrSVDSolver.h:105
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
CISSTNETLIB_INTEGER Ldu
Definition: nmrSVDSolver.h:96
vctDynamicMatrix< CISSTNETLIB_DOUBLE > U
Definition: nmrSVDSolver.h:102
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Work
Definition: nmrSVDSolver.h:104
void SetSize(size_type rows, size_type cols, bool storageOrder)
Definition: vctDynamicMatrix.h:364
#define cmnThrow(a)
Definition: MinimalCmn.h:4
Implementation of a fixed-size matrix using template metaprogramming.
Definition: vctFixedSizeMatrix.h:52
void Allocate(const vctFixedSizeMatrix< CISSTNETLIB_DOUBLE, _rows, _cols, _storageOrder > &A)
Definition: nmrSVDSolver.h:211
void Solve(vctDynamicMatrixBase< _matrixOwnerType, CISSTNETLIB_DOUBLE > &A)
Definition: nmrSVDSolver.h:232
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Vt
Definition: nmrSVDSolver.h:103
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetU(void) const
Definition: nmrSVDSolver.h:291
nmrSVDSolver(const vctFixedSizeMatrix< CISSTNETLIB_DOUBLE, _rows, _cols, _storageOrder > &A)
Definition: nmrSVDSolver.h:152
nmrSVDSolver(const vctDynamicMatrixBase< _matrixOwnerType, CISSTNETLIB_DOUBLE > &A)
Definition: nmrSVDSolver.h:145
const bool VCT_COL_MAJOR
Definition: vctForwardDeclarations.h:46
Definition: nmrSVDSolver.h:87
CISSTNETLIB_INTEGER N
Definition: nmrSVDSolver.h:94
nmrSVDSolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, bool storageOrder)
Definition: nmrSVDSolver.h:127
char Jobu
Definition: nmrSVDSolver.h:99