28 #ifndef _nmrLSEISolver_h
29 #define _nmrLSEISolver_h
42 CISSTNETLIB_INTEGER
ME;
43 CISSTNETLIB_INTEGER
MA;
44 CISSTNETLIB_INTEGER
MG;
45 CISSTNETLIB_INTEGER
MDW;
46 CISSTNETLIB_INTEGER
N;
84 nmrLSEISolver(CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n) {
109 inline void Allocate(CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n) {
117 CISSTNETLIB_INTEGER K = std::max(
MA + MG,
N);
170 throw (std::runtime_error)
173 if(
MA != static_cast<CISSTNETLIB_INTEGER>(A.rows()) ||
174 N != static_cast<CISSTNETLIB_INTEGER>(A.cols()) ||
175 MA != static_cast<CISSTNETLIB_INTEGER>(b.rows()) ||
176 1 != static_cast<CISSTNETLIB_INTEGER>(b.cols()) ){
177 std::string msg(
"nmrLSEISolver::Solve: Objectives dimensions." );
178 cmnThrow( std::runtime_error( msg ) );
182 (
ME !=
static_cast<CISSTNETLIB_INTEGER
>(E.rows()) ||
183 N != static_cast<CISSTNETLIB_INTEGER>(E.cols()) ||
184 ME != static_cast<CISSTNETLIB_INTEGER>(f.rows()) ||
185 1 != static_cast<CISSTNETLIB_INTEGER>(f.cols()) ) ){
186 std::string msg(
"nmrLSEISolver::Solve: Equalities dimensions." );
187 cmnThrow( std::runtime_error( msg ) );
191 (
MG !=
static_cast<CISSTNETLIB_INTEGER
>(G.rows()) ||
192 N != static_cast<CISSTNETLIB_INTEGER>(G.cols()) ||
193 MG != static_cast<CISSTNETLIB_INTEGER>(h.rows()) ||
194 1 != static_cast<CISSTNETLIB_INTEGER>(h.cols()) ) ){
195 std::string msg(
"nmrLSEISolver::Solve: Inequalities dimensions." );
196 cmnThrow( std::runtime_error( msg ) );
200 if ( ( !A.IsFortran() ) ||
201 ( !b.IsFortran() ) ||
202 ( !E.empty() && !E.IsFortran() ) ||
203 ( !f.empty() && !f.IsFortran() ) ||
204 ( !G.empty() && !G.IsFortran() ) ||
205 ( !h.empty() && !h.IsFortran() ) ){
206 std::string msg(
"nmrLSEISolver::Solve: Incompatible matrices." );
207 cmnThrow( std::runtime_error( msg ) );
210 if( (
MDW != static_cast<CISSTNETLIB_INTEGER>(
W.
rows() ) ) ||
211 (
N+1 !=
static_cast<CISSTNETLIB_INTEGER
>(
W.
cols() ))) {
212 std::string msg(
"nmrLSEISolver::Solve: workspace not allocated." );
213 cmnThrow( std::runtime_error( msg ) );
224 #if defined(CISSTNETLIB_VERSION_MAJOR)
225 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
231 #else // no major version
236 #endif // CISSTNETLIB_VERSION
240 throw (std::runtime_error)
242 if( (
MDW != static_cast<CISSTNETLIB_INTEGER>(
W.
rows()) ) ||
243 (
N+1 !=
static_cast<CISSTNETLIB_INTEGER
>(
W.
cols())) ) {
244 std::string msg(
"nmrLSEISolver::Solve: workspace not allocated." );
248 #if defined(CISSTNETLIB_VERSION_MAJOR)
249 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
255 #else // no major version
260 #endif // CISSTNETLIB_VERSION
281 #endif // _nmrLSEISolver_h
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type GRef
Definition: nmrLSEISolver.h:55
CISSTNETLIB_INTEGER MDW
Definition: nmrLSEISolver.h:45
Declaration of vctDynamicMatrix.
CISSTNETLIB_DOUBLE RNormL
Definition: nmrLSEISolver.h:49
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Work
Definition: nmrLSEISolver.h:59
CISSTNETLIB_INTEGER Mode
Definition: nmrLSEISolver.h:47
CISSTNETLIB_INTEGER N
Definition: nmrLSEISolver.h:46
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &E, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &f, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &b, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &G, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &h)
Definition: nmrLSEISolver.h:164
CISSTNETLIB_DOUBLE GetRNormL(void) const
Definition: nmrLSEISolver.h:275
CISSTNETLIB_INTEGER ME
Definition: nmrLSEISolver.h:42
CISSTNETLIB_DOUBLE GetRNormE(void) const
Definition: nmrLSEISolver.h:270
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type bRef
Definition: nmrLSEISolver.h:57
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
const vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetX(void) const
Definition: nmrLSEISolver.h:264
CISSTNETLIB_INTEGER MA
Definition: nmrLSEISolver.h:43
nmrLSEISolver(void)
Definition: nmrLSEISolver.h:68
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
void Allocate(CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n)
Definition: nmrLSEISolver.h:109
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type ARef
Definition: nmrLSEISolver.h:54
void Solve(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &W)
Definition: nmrLSEISolver.h:239
void Allocate(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &E, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSEISolver.h:138
void SetSize(size_type rows, size_type cols, bool storageOrder)
Definition: vctDynamicMatrix.h:364
vctDynamicMatrix< CISSTNETLIB_DOUBLE > X
Definition: nmrLSEISolver.h:51
CISSTNETLIB_INTEGER MG
Definition: nmrLSEISolver.h:44
vctDynamicMatrix< CISSTNETLIB_DOUBLE > W
Definition: nmrLSEISolver.h:52
#define cmnThrow(a)
Definition: MinimalCmn.h:4
vctDynamicMatrix< CISSTNETLIB_INTEGER > Index
Definition: nmrLSEISolver.h:60
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type fRef
Definition: nmrLSEISolver.h:56
ThisType & Assign(const vctDynamicConstMatrixBase< __matrixOwnerType, value_type > &other)
Definition: vctDynamicMatrixBase.h:509
vctDynamicMatrix< CISSTNETLIB_DOUBLE > Options
Definition: nmrLSEISolver.h:50
CISSTNETLIB_DOUBLE RNormE
Definition: nmrLSEISolver.h:48
const bool VCT_COL_MAJOR
Definition: vctForwardDeclarations.h:46
nmrLSEISolver(CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n)
Definition: nmrLSEISolver.h:84
nmrLSEISolver(vctDynamicMatrix< CISSTNETLIB_DOUBLE > &E, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &A, vctDynamicMatrix< CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSEISolver.h:94
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type ERef
Definition: nmrLSEISolver.h:53
Definition: nmrLSEISolver.h:39
vctDynamicMatrix< CISSTNETLIB_DOUBLE >::Submatrix::Type hRef
Definition: nmrLSEISolver.h:58