27 #ifndef _nmrSVDRSSolver_h
28 #define _nmrSVDRSSolver_h
121 CISSTNETLIB_INTEGER
M;
122 CISSTNETLIB_INTEGER
N;
125 CISSTNETLIB_INTEGER
Nb;
149 CISSTNETLIB_INTEGER n,
150 CISSTNETLIB_INTEGER nb = 1) {
174 CISSTNETLIB_INTEGER n,
175 CISSTNETLIB_INTEGER nb = 1) {
178 Lda = std::max(
M,
N);
213 throw (std::runtime_error)
216 if ((
M != static_cast<CISSTNETLIB_INTEGER>(A.rows())) ||
217 (
N !=
static_cast<CISSTNETLIB_INTEGER
>(A.cols())) ||
218 (
Nb !=
static_cast<CISSTNETLIB_INTEGER
>(B.cols()))) {
219 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: Sizes used for Allocate were different"));
223 if (
M != static_cast<CISSTNETLIB_INTEGER>(B.rows())) {
224 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: Sizes of parameters are incompatible"));
228 if (! (A.IsFortran() && B.IsFortran())) {
229 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: All parameters must be Fortran compatible"));
232 #if defined(CISSTNETLIB_VERSION_MAJOR)
233 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
234 cisstNetlib_svdrs_(A.Pointer(), &
Lda, &
M, &
N, B.Pointer(),
237 #else // no major version
238 svdrs_(A.Pointer(), &
Lda, &
M, &
N, B.Pointer(),
240 #endif // CISSTNETLIB_VERSION
250 #endif // _nmrSVDRSSolver_h
Declaration of vctDynamicMatrix.
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrSVDRSSolver.h:190
CISSTNETLIB_INTEGER N
Definition: nmrSVDRSSolver.h:122
vctDynamicMatrix< CISSTNETLIB_DOUBLE > S
Definition: nmrSVDRSSolver.h:126
nmrSVDRSSolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrSVDRSSolver.h:160
nmrSVDRSSolver(void)
Definition: nmrSVDRSSolver.h:135
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
CISSTNETLIB_INTEGER Lda
Definition: nmrSVDRSSolver.h:123
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
void SetSize(size_type rows, size_type cols, bool storageOrder)
Definition: vctDynamicMatrix.h:364
Definition: nmrSVDRSSolver.h:118
#define cmnThrow(a)
Definition: MinimalCmn.h:4
nmrSVDRSSolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb=1)
Definition: nmrSVDRSSolver.h:148
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb=1)
Definition: nmrSVDRSSolver.h:173
CISSTNETLIB_INTEGER Nb
Definition: nmrSVDRSSolver.h:125
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetS(void) const
Definition: nmrSVDRSSolver.h:244
CISSTNETLIB_INTEGER Ldb
Definition: nmrSVDRSSolver.h:124
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition: nmrSVDRSSolver.h:211
const bool VCT_COL_MAJOR
Definition: vctForwardDeclarations.h:46
CISSTNETLIB_INTEGER M
Definition: nmrSVDRSSolver.h:121
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Work
Definition: nmrSVDRSSolver.h:127