25#ifndef _nmrSVDRSSolver_h
26#define _nmrSVDRSSolver_h
119 CISSTNETLIB_INTEGER
M;
120 CISSTNETLIB_INTEGER
N;
123 CISSTNETLIB_INTEGER
Nb;
147 CISSTNETLIB_INTEGER n,
148 CISSTNETLIB_INTEGER nb = 1) {
172 CISSTNETLIB_INTEGER n,
173 CISSTNETLIB_INTEGER nb = 1) {
176 Lda = std::max(
M,
N);
190 {
Allocate(A.rows(), A.cols(), B.cols()); }
214 if ((
M !=
static_cast<CISSTNETLIB_INTEGER
>(A.rows())) ||
215 (
N !=
static_cast<CISSTNETLIB_INTEGER
>(A.cols())) ||
216 (
Nb !=
static_cast<CISSTNETLIB_INTEGER
>(B.cols()))) {
217 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: Sizes used for Allocate were different"));
221 if (
M !=
static_cast<CISSTNETLIB_INTEGER
>(B.rows())) {
222 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: Sizes of parameters are incompatible"));
226 if (! (A.IsFortran() && B.IsFortran())) {
227 cmnThrow(std::runtime_error(
"nmrSVDRSSolver Solve: All parameters must be Fortran compatible"));
230#if defined(CISSTNETLIB_VERSION_MAJOR)
231#if (CISSTNETLIB_VERSION_MAJOR >= 3)
232 cisstNetlib_svdrs_(A.Pointer(), &
Lda, &
M, &
N, B.Pointer(),
236 svdrs_(A.Pointer(), &
Lda, &
M, &
N, B.Pointer(),
nmrSVDRSSolver(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb=1)
Definition nmrSVDRSSolver.h:146
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B) CISST_THROW(std
Definition nmrSVDRSSolver.h:209
CISSTNETLIB_INTEGER Nb
Definition nmrSVDRSSolver.h:123
CISSTNETLIB_INTEGER Ldb
Definition nmrSVDRSSolver.h:122
nmrSVDRSSolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition nmrSVDRSSolver.h:158
void Allocate(CISSTNETLIB_INTEGER m, CISSTNETLIB_INTEGER n, CISSTNETLIB_INTEGER nb=1)
Definition nmrSVDRSSolver.h:171
vctDynamicMatrix< CISSTNETLIB_DOUBLE > S
Definition nmrSVDRSSolver.h:124
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Work
Definition nmrSVDRSSolver.h:125
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetS(void) const
Definition nmrSVDRSSolver.h:242
CISSTNETLIB_INTEGER Lda
Definition nmrSVDRSSolver.h:121
nmrSVDRSSolver(void)
Definition nmrSVDRSSolver.h:133
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &B)
Definition nmrSVDRSSolver.h:188
CISSTNETLIB_INTEGER M
Definition nmrSVDRSSolver.h:119
CISSTNETLIB_INTEGER N
Definition nmrSVDRSSolver.h:120
Definition vctForwardDeclarations.h:157
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
Declaration of vctDynamicMatrix.
const bool VCT_COL_MAJOR
Definition vctForwardDeclarations.h:44