|
enum | { MIN_MN = (_ma<_n) ? _ma : _n
} |
|
enum | { K = (_ma + _mg > _n)?(_ma + _mg) : _n
} |
|
enum | { LWORK_LS = 2*((vct::size_type)MIN_MN)
} |
|
enum | { LWORK_LSI = _n + (_mg + 2)*(_n + 7) + (vct::size_type)K
} |
|
enum | { LWORK_LSEI = 2*(_me + _n) + (_mg + 2)*(_n + 7) + (vct::size_type)K
} |
|
enum | { LWORK_TMP = ((vct::size_type)LWORK_LS > (vct::size_type)LWORK_LSI) ? (vct::size_type)LWORK_LS : (vct::size_type)LWORK_LSI
} |
|
enum | { LWORK = ((vct::size_type)LWORK_LSEI > (vct::size_type)LWORK_TMP) ? (vct::size_type)LWORK_LSEI : (vct::size_type)LWORK_TMP
} |
|
enum | { LIWORK = _mg + 2*_n + 2
} |
|
typedef vctFixedSizeMatrixRef
< CISSTNETLIB_DOUBLE, _ma, _n,
1, _ma > | TypeA |
|
typedef vctFixedSizeMatrixRef
< CISSTNETLIB_DOUBLE,(_me==0)?1:_me,
_n, 1,(_me==0)?1:_me > | TypeE |
|
typedef vctFixedSizeMatrixRef
< CISSTNETLIB_DOUBLE,(_mg==0)?1:_mg,
_n, 1,(_mg==0)?1:_mg > | TypeG |
|
typedef vctFixedSizeVectorRef
< CISSTNETLIB_DOUBLE, _ma, 1 > | Typeb |
|
typedef vctFixedSizeVectorRef
< CISSTNETLIB_DOUBLE,(_me==0)?1:_me, 1 > | Typef |
|
typedef vctFixedSizeVectorRef
< CISSTNETLIB_DOUBLE,(_mg==0)?1:_mg, 1 > | Typeh |
|
typedef vctFixedSizeVectorRef
< CISSTNETLIB_DOUBLE,(_me==0)?1:_me, 1 > | TypeRNormE |
|
typedef vctFixedSizeVectorRef
< CISSTNETLIB_DOUBLE, _ma, 1 > | TypeRNormL |
|
typedef vctFixedSizeVector
< CISSTNETLIB_DOUBLE, LWORK > | TypeWork |
|
typedef vctFixedSizeVector
< CISSTNETLIB_INTEGER, LIWORK > | TypeIWork |
|
typedef vctFixedSizeVector
< CISSTNETLIB_DOUBLE, _n > | TypeX |
|
typedef vctFixedSizeVector
< CISSTNETLIB_DOUBLE, _ma+_me > | TypeRNorm |
|
typedef vctFixedSizeMatrix
< CISSTNETLIB_DOUBLE, _ma+_me+_mg,
_n+1, VCT_COL_MAJOR > | TypeInput |
|
template<vct::size_type _ma, vct::size_type _me, vct::size_type _mg, vct::size_type _n>
class nmrLSqLinSolutionFixedSize< _ma, _me, _mg, _n >
This provides the solution class for fixed size matrices and provides an easy to use template. That is nmrSVDSolutionFixedSize<4, 3, VCT_COL_MAJOR> vs. nmrSVDSolutionBase<vctFixedSizeMatrix<4, 3, VCT_COL_MAJOR> No extra work of allocation etc is required for fixed size.
template<vct::size_type _ma, vct::size_type _me, vct::size_type _mg, vct::size_type _n>
Memory allocated for input if needed The LSEI (constrained least squares) requires that the input matrices be in one continuous memory block ordered according to fortran order (Column Major format), such that first Mc rows and N columns represent A, Ma rows and N+1 th column represent b, next Me rows represent (E, f) and last Mg rows represent (G, h) where the original LSEI problem is arg min || A x - b ||, s.t. E x = f and G x >= h. The input for LSI is similar other than Me == 0.