174 static inline CISSTNETLIB_INTEGER
GetWorkspaceSize(
size_t ma,
size_t me,
size_t mg,
size_t n)
176 CISSTNETLIB_INTEGER lwork;
177 if ((me == 0) && (mg ==0)) {
179 CISSTNETLIB_INTEGER minmn =
static_cast<CISSTNETLIB_INTEGER
>(std::max(std::min(ma,n),static_cast<size_t>(1)));
181 }
else if (me == 0) {
182 size_t k = std::max(ma+mg,n);
183 lwork =
static_cast<CISSTNETLIB_INTEGER
>(k+n+(mg+2)*(n+7));
185 size_t k = std::max(ma+mg,n);
186 lwork =
static_cast<CISSTNETLIB_INTEGER
>(2*(me+n)+k+(mg+2)*(n+7));
193 if ((me == 0) && (mg ==0)) {
195 }
else if (me == 0) {
196 return static_cast<CISSTNETLIB_INTEGER
>(mg+2*n+1);
198 return static_cast<CISSTNETLIB_INTEGER
>(mg+2*n+2);
210 CISSTNETLIB_INTEGER Mrows =
static_cast<CISSTNETLIB_INTEGER
>(ma);
211 CISSTNETLIB_INTEGER Ncols =
static_cast<CISSTNETLIB_INTEGER
>(n);
212 CISSTNETLIB_INTEGER nrhs = 1;
213 CISSTNETLIB_INTEGER lda =
static_cast<CISSTNETLIB_INTEGER
>(std::max(ma,static_cast<size_t>(1)));
214 CISSTNETLIB_INTEGER ldb =
static_cast<CISSTNETLIB_INTEGER
>(std::max(std::max(static_cast<size_t>(1),ma),n));
215 CISSTNETLIB_INTEGER lwork = -1;
216 CISSTNETLIB_INTEGER info;
217 CISSTNETLIB_DOUBLE work;
219 #if defined(CISSTNETLIB_VERSION_MAJOR)
220 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
221 cisstNetlib_dgels_(&trans, &Mrows, &Ncols, &nrhs,
224 &work, &lwork, &info);
226 #else // no major version
227 dgels_(&trans, &Mrows, &Ncols, &nrhs,
230 &work, &lwork, &info);
231 #endif // CISSTNETLIB_VERSION
234 return static_cast<CISSTNETLIB_INTEGER
>(work);
240 template <
typename _matrixOwnerTypeA>
248 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
254 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
263 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
270 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
296 template <
typename _matrixOwnerTypeA>
306 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
313 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
325 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
333 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
382 return solution.
RNorm;
388 return solution.
Work;
391 return solution.
IWork;
393 inline CISSTNETLIB_INTEGER
GetMa(
void) {
394 return static_cast<CISSTNETLIB_INTEGER
>(solution.
m_Ma);
396 inline CISSTNETLIB_INTEGER
GetMe(
void) {
397 return static_cast<CISSTNETLIB_INTEGER
>(solution.
m_Me);
399 inline CISSTNETLIB_INTEGER
GetMg(
void) {
400 return static_cast<CISSTNETLIB_INTEGER
>(solution.
m_Mg);
402 inline CISSTNETLIB_INTEGER
GetN(
void) {
403 return static_cast<CISSTNETLIB_INTEGER
>(solution.
m_N);
447 template <
typename _matrixOwnerTypeA>
461 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeWork>
476 template <
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
481 this->
SetRef(ma, 0, 0, n, inX, inWork);
495 template <
typename _vectorOwnerTypeX>
499 this->
SetRef(ma, 0, 0, n, inX);
510 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
529 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
544 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG,
545 typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
562 template <
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
568 this->
SetRef(ma, 0, mg, n, inX, inWork, inIWork);
582 template <
typename _vectorOwnerTypeX>
586 this->
SetRef(ma, 0, mg, n, inX);
597 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG,
598 typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
599 typename _vectorOwnerTypeIWork>
620 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
637 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
638 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeWork,
639 typename _vectorOwnerTypeIWork>
657 template <
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
663 this->
SetRef(ma, me, mg, n, inX, inWork, inIWork);
677 template <
typename _vectorOwnerTypeX>
681 this->
SetRef(ma, me, mg, n, inX);
692 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
693 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeX,
694 typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
720 template <
typename _matrixOwnerTypeA>
743 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeWork>
765 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
786 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeX>
809 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG>
834 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG,
835 typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
859 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG,
860 typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
861 typename _vectorOwnerTypeIWork>
884 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeG,
typename _vectorOwnerTypeX>
909 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG>
936 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
937 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
962 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
typename _matrixOwnerTypeG,
963 typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
964 typename _vectorOwnerTypeIWork>
988 template <
typename _matrixOwnerTypeA,
typename _matrixOwnerTypeE,
989 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeX>
1011 inline void Allocate(
size_t ma,
size_t me,
size_t mg,
size_t n)
1013 this->
Malloc(ma, me, mg, n,
true,
true,
true);
1027 template <
typename _vectorOwnerTypeWork>
1028 inline void Allocate(
size_t ma,
size_t me,
size_t mg,
size_t n,
1032 if (lwork > static_cast<CISSTNETLIB_INTEGER>(inWork.
size())) {
1033 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for Work"));
1035 this->
Malloc(ma, me, mg, n,
false,
true,
true);
1048 template <
typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
1049 inline void Allocate(
size_t ma,
size_t me,
size_t mg,
size_t n,
1054 if (lwork > static_cast<CISSTNETLIB_INTEGER>(inWork.
size())) {
1055 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for Work"));
1058 if (liwork > static_cast<CISSTNETLIB_INTEGER>(inIWork.
size())) {
1059 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for IWork"));
1061 this->
Malloc(ma, me, mg, n,
false,
true,
true);
1079 template <
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
1080 void SetRef(
size_t ma,
size_t me,
size_t mg,
size_t n,
1084 if (lwork > static_cast<CISSTNETLIB_INTEGER>(inWork.
size())) {
1085 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for Work"));
1087 if (n > static_cast<CISSTNETLIB_INTEGER>(inX.
size())) {
1088 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for X"));
1090 this->
Malloc(ma, me, mg, n,
false,
true,
false);
1102 template <
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork,
typename _vectorOwnerTypeIWork>
1103 void SetRef(
size_t ma,
size_t me,
size_t mg,
size_t n,
1109 if (lwork > static_cast<CISSTNETLIB_INTEGER>(inWork.
size())) {
1110 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for Work"));
1113 if (liwork > static_cast<CISSTNETLIB_INTEGER>(inIWork.
size())) {
1114 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for IWork"));
1116 if (n > inX.
size()) {
1117 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for X"));
1119 this->
Malloc(ma, me, mg, n,
false,
true,
false);
1132 template <
typename _vectorOwnerTypeX>
1133 void SetRef(
size_t ma,
size_t me,
size_t mg,
size_t n,
1136 if (n > inX.
size()) {
1137 cmnThrow(std::runtime_error(
"nmrLSqLin: Incorrect size for X"));
1139 this->
Malloc(ma, me, mg, n,
true,
true,
false);
1158 void Malloc(
size_t ma,
size_t me,
size_t mg,
size_t n,
bool allocateWorkspace,
bool allocateInput,
bool allocateOutput)
1162 if (allocateWorkspace) {
1167 if (mg > 0 && allocateInput) {
1170 if (allocateOutput) {
1173 (this->
RNorm).SetSize(ma+me);
1177 template <
typename _vectorOwnerTypeWork,
typename _matrixOwnerTypeI,
typename _vectorOwnerTypeX>
1178 void SetRef(
size_t ma,
size_t me,
size_t mg,
size_t n,
1190 (this->
E).
SetRef(input, 0, 0, me, n);
1192 (this->
A).
SetRef(input, me, 0, ma, n);
1194 (this->
G).
SetRef(input, ma + me, 0, mg, n);
1197 (this->
A).
SetRef(input, 0, 0, ma, n);
1199 (this->
G).
SetRef(input, ma, 0, mg, n);
1243 template <
typename _matrixOwnerType,
typename _vectorOwnerType>
1249 CISSTNETLIB_INTEGER ret_value;
1252 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Input must be in Column Major format"));
1254 CISSTNETLIB_INTEGER Mrows =
static_cast<CISSTNETLIB_INTEGER
>(A.rows());
1255 CISSTNETLIB_INTEGER Ncols =
static_cast<CISSTNETLIB_INTEGER
>(A.cols());
1256 if ((Mrows != solutionFriend.
GetMa()) || (Ncols != solutionFriend.
GetN())) {
1257 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size used for Allocate was different"));
1259 if (Mrows != static_cast<CISSTNETLIB_INTEGER>(b.size())) {
1260 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of b must be same as number of rows of A"));
1263 CISSTNETLIB_INTEGER nrhs = 1;
1264 CISSTNETLIB_INTEGER lda = std::max(Mrows,static_cast<CISSTNETLIB_INTEGER>(1));
1265 CISSTNETLIB_INTEGER ldb = std::max(std::max(static_cast<CISSTNETLIB_INTEGER>(1),Mrows),Ncols);
1268 CISSTNETLIB_DOUBLE *b_ptr = b.Pointer();
1269 if (Mrows < Ncols) {
1277 #if defined(CISSTNETLIB_VERSION_MAJOR)
1278 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1279 cisstNetlib_dgels_(&trans, &Mrows, &Ncols, &nrhs,
1284 #else // no major version
1285 dgels_(&trans, &Mrows, &Ncols, &nrhs,
1289 #endif // CISSTNETLIB_VERSION
1291 if (Mrows >= Ncols) {
1323 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1324 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh>
1334 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Input must be in Column Major format"));
1336 CISSTNETLIB_INTEGER ma =
static_cast<CISSTNETLIB_INTEGER
>(A.rows());
1337 CISSTNETLIB_INTEGER mg =
static_cast<CISSTNETLIB_INTEGER
>(G.rows());
1338 CISSTNETLIB_INTEGER na =
static_cast<CISSTNETLIB_INTEGER
>(A.cols());
1339 CISSTNETLIB_INTEGER ng =
static_cast<CISSTNETLIB_INTEGER
>(G.cols());
1340 if ((ma != solutionFriend.
GetMa()) || (mg != solutionFriend.
GetMg())
1341 || (na != solutionFriend.
GetN()) || (ng != solutionFriend.
GetN())) {
1342 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size used for Allocate was different"));
1344 if (ma != static_cast<CISSTNETLIB_INTEGER>(b.size())) {
1345 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of b must be same as number of rows of A"));
1347 if (mg != static_cast<CISSTNETLIB_INTEGER>(h.size())) {
1348 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of h must be same as number of rows of G"));
1355 CISSTNETLIB_INTEGER mdw = ma + mg;
1356 CISSTNETLIB_INTEGER mode = 0;
1357 CISSTNETLIB_DOUBLE prgopt = 1.;
1361 #if defined(CISSTNETLIB_VERSION_MAJOR)
1362 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1363 cisstNetlib_lsi_(solutionFriend.
GetInput().
Pointer(), &mdw, &ma, &mg, &na,
1367 #else // no major version
1371 #endif // CISSTNETLIB_VERSION
1399 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1400 typename _matrixOwnerTypeE,
typename _vectorOwnerTypef,
1401 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh>
1413 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Input must be in Column Major format"));
1415 CISSTNETLIB_INTEGER ma =
static_cast<CISSTNETLIB_INTEGER
>(A.rows());
1416 CISSTNETLIB_INTEGER me =
static_cast<CISSTNETLIB_INTEGER
>(E.rows());
1417 CISSTNETLIB_INTEGER mg =
static_cast<CISSTNETLIB_INTEGER
>(G.rows());
1418 CISSTNETLIB_INTEGER na =
static_cast<CISSTNETLIB_INTEGER
>(A.cols());
1419 CISSTNETLIB_INTEGER ne =
static_cast<CISSTNETLIB_INTEGER
>(E.cols());
1420 CISSTNETLIB_INTEGER ng =
static_cast<CISSTNETLIB_INTEGER
>(G.cols());
1421 if ((ma != solutionFriend.
GetMa()) || (mg != solutionFriend.
GetMg()) || (me != solutionFriend.
GetMe())
1422 || (na != solutionFriend.
GetN()) || (ng != solutionFriend.
GetN() || (ne != solutionFriend.
GetN()))
1424 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size used for Allocate was different"));
1426 if (ma != static_cast<CISSTNETLIB_INTEGER>(b.size())) {
1427 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of b must be same as number of rows of A"));
1429 if (mg != static_cast<CISSTNETLIB_INTEGER>(h.size())) {
1430 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of h must be same as number of rows of G"));
1432 if (me != static_cast<CISSTNETLIB_INTEGER>(f.size())) {
1433 cmnThrow(std::runtime_error(
"nmrLSqLinSolver Solve: Size of f must be same as number of rows of E"));
1442 CISSTNETLIB_INTEGER mdw = ma + mg + me;
1443 CISSTNETLIB_INTEGER mode = 0;
1444 CISSTNETLIB_DOUBLE prgopt = 1.;
1447 #if defined(CISSTNETLIB_VERSION_MAJOR)
1448 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1449 cisstNetlib_lsei_(solutionFriend.
GetInput().
Pointer(), &mdw, &me, &ma, &mg, &na,
1454 #else // no major version
1459 #endif // CISSTNETLIB_VERSION
1481 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
1488 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, lsqLinSolution);
1507 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
typename _vectorOwnerTypeX>
1513 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, lsqLinSolution);
1535 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1536 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh,
typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
1545 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, G, h, lsqLinSolution);
1566 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1567 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh,
typename _vectorOwnerTypeX>
1575 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, G, h, lsqLinSolution);
1599 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1600 typename _matrixOwnerTypeE,
typename _vectorOwnerTypef,
1601 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh,
1602 typename _vectorOwnerTypeX,
typename _vectorOwnerTypeWork>
1613 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, E, f, G, h, lsqLinSolution);
1636 template <
typename _matrixOwnerTypeA,
typename _vectorOwnerTypeb,
1637 typename _matrixOwnerTypeE,
typename _vectorOwnerTypef,
1638 typename _matrixOwnerTypeG,
typename _vectorOwnerTypeh,
1639 typename _vectorOwnerTypeX>
1649 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, E, f, G, h, lsqLinSolution);
1665 template <vct::
size_type _ma, vct::
size_type _me, vct::
size_type _mg, vct::
size_type _n>
1670 enum {
K = (_ma + _mg > _n)?(_ma + _mg) : _n};
1745 return solution.RNorm;
1748 return solution.InputMemory;
1751 return solution.WorkspaceMemory;
1754 return solution.IWorkspaceMemory;
1762 RNormL(RNorm.Pointer()),
1763 RNormE(RNorm.Pointer(_ma)) {}
1769 inline const TypeX &
GetX(
void)
const {
1784 template <vct::
size_type _ma, vct::
size_type _n, vct::
size_type _work>
1790 CISSTNETLIB_INTEGER ret_value;
1792 CISSTNETLIB_INTEGER Mrows =
static_cast<CISSTNETLIB_INTEGER
>(_ma);
1793 CISSTNETLIB_INTEGER Ncols =
static_cast<CISSTNETLIB_INTEGER
>(_n);
1794 CISSTNETLIB_INTEGER nrhs = 1;
1795 CISSTNETLIB_INTEGER lda = std::max(Mrows,static_cast<CISSTNETLIB_INTEGER>(1));
1796 CISSTNETLIB_INTEGER ldb = std::max(std::max(static_cast<CISSTNETLIB_INTEGER>(1),Mrows),Ncols);
1798 CMN_ASSERT(lwork <= static_cast<CISSTNETLIB_INTEGER>(_work));
1799 CISSTNETLIB_DOUBLE *b_ptr = b.
Pointer();
1800 if (Mrows < Ncols) {
1805 memcpy(x.
Pointer(), b.
Pointer(), Mrows*
sizeof(CISSTNETLIB_DOUBLE));
1809 #if defined(CISSTNETLIB_VERSION_MAJOR)
1810 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1811 cisstNetlib_dgels_(&trans, &Mrows, &Ncols, &nrhs,
1814 Work.
Pointer(), &lwork, &ret_value);
1816 #else // no major version
1817 dgels_(&trans, &Mrows, &Ncols, &nrhs,
1820 Work.
Pointer(), &lwork, &ret_value);
1821 #endif // CISSTNETLIB_VERSION
1823 if (Mrows >= Ncols) {
1833 template <vct::
size_type _ma, vct::
size_type _n>
1839 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, x, work);
1843 template <vct::
size_type _ma, vct::
size_type _n>
1849 CISSTNETLIB_INTEGER ret_value =
nmrLSqLin(A, b, solutionFriend.
GetX(), solutionFriend.
GetWork());
1857 template <vct::
size_type _ma, vct::
size_type _mg, vct::
size_type _n, vct::
size_type _work, vct::
size_type _iwork>
1865 CISSTNETLIB_INTEGER ma =
static_cast<CISSTNETLIB_INTEGER
>(_ma);
1866 CISSTNETLIB_INTEGER mg =
static_cast<CISSTNETLIB_INTEGER
>(_mg);
1867 CISSTNETLIB_INTEGER na =
static_cast<CISSTNETLIB_INTEGER
>(_n);
1877 CISSTNETLIB_INTEGER mdw = ma + mg;
1878 CISSTNETLIB_INTEGER mode = 0;
1879 CISSTNETLIB_DOUBLE prgopt = 1.;
1882 #if defined(CISSTNETLIB_VERSION_MAJOR)
1883 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1884 cisstNetlib_lsi_(W.
Pointer(), &mdw, &ma, &mg, &na,
1888 #else // no major version
1889 lsi_(W.
Pointer(), &mdw, &ma, &mg, &na,
1892 #endif // CISSTNETLIB_VERSION
1896 template <vct::
size_type _ma, vct::
size_type _mg, vct::
size_type _n>
1907 CISSTNETLIB_INTEGER ret_value;
1910 ret_value = nmrLSqLin<_ma, _mg, _n, nmrLSqLinSolutionFixedSize<_ma, 0, _mg, _n>::LWORK,
1912 (A, b, G, h, x, w, rNorm, work, iwork);
1916 template <vct::
size_type _ma, vct::
size_type _mg, vct::
size_type _n>
1924 CISSTNETLIB_INTEGER ret_value;
1927 ret_value = nmrLSqLin<_ma, _mg, _n, nmrLSqLinSolutionFixedSize<_ma, 0, _mg, _n>::LWORK,
1949 CISSTNETLIB_INTEGER me =
static_cast<CISSTNETLIB_INTEGER
>(_me);
1950 CISSTNETLIB_INTEGER ma =
static_cast<CISSTNETLIB_INTEGER
>(_ma);
1951 CISSTNETLIB_INTEGER mg =
static_cast<CISSTNETLIB_INTEGER
>(_mg);
1952 CISSTNETLIB_INTEGER na =
static_cast<CISSTNETLIB_INTEGER
>(_n);
1966 CISSTNETLIB_INTEGER mdw = ma + me + mg;
1967 CISSTNETLIB_INTEGER mode = 0;
1968 CISSTNETLIB_DOUBLE prgopt = 1.;
1971 #if defined(CISSTNETLIB_VERSION_MAJOR)
1972 #if (CISSTNETLIB_VERSION_MAJOR >= 3)
1973 cisstNetlib_lsei_(W.
Pointer(), &mdw, &me, &ma, &mg, &na,
1977 #else // no major version
1978 lsei_(W.
Pointer(), &mdw, &me, &ma, &mg, &na,
1981 #endif // CISSTNETLIB_VERSION
1985 template <vct::
size_type _ma, vct::
size_type _me, vct::
size_type _mg, vct::
size_type _n>
1995 CISSTNETLIB_INTEGER ret_value;
1998 ret_value = nmrLSqLin<_ma, _me, _mg, _n, nmrLSqLinSolutionFixedSize<_ma, _me, _mg, _n>::LWORK,
2000 (A, b, E, f, G, h, x, w, rNorm, work, iwork);
2004 template <vct::
size_type _ma, vct::
size_type _me, vct::
size_type _mg, vct::
size_type _n>
2011 CISSTNETLIB_INTEGER ret_value;
2014 ret_value = nmrLSqLin<_ma, _me, _mg, _n, nmrLSqLinSolutionFixedSize<_ma, _me, _mg, _n>::LWORK,
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:695
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:862
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > A
Definition: nmrLSqLin.h:144
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > E
Definition: nmrLSqLin.h:145
vctFixedSizeVectorRef< CISSTNETLIB_DOUBLE,(_me==0)?1:_me, 1 > TypeRNormE
Definition: nmrLSqLin.h:1684
vctDynamicVectorRef< CISSTNETLIB_INTEGER > & GetIWork(void)
Definition: nmrLSqLin.h:390
vctFixedSizeVector< CISSTNETLIB_DOUBLE, LWORK > TypeWork
Definition: nmrLSqLin.h:1687
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:787
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:511
size_t m_Mg
Definition: nmrLSqLin.h:165
Declaration of vctDynamicMatrix.
#define CMN_ASSERT(expr)
Definition: cmnAssert.h:90
vctDynamicVector< CISSTNETLIB_DOUBLE > WorkspaceMemory
Definition: nmrLSqLin.h:120
Definition: nmrLSqLin.h:1674
Definition: vctDynamicMatrixBase.h:42
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > & GetE(void)
Definition: nmrLSqLin.h:363
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & GetX(void)
Definition: nmrLSqLin.h:378
static CISSTNETLIB_INTEGER GetWorkspaceSize(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG)
Definition: nmrLSqLin.h:264
nmrLSqLinSolutionDynamic()
Definition: nmrLSqLin.h:414
static CISSTNETLIB_INTEGER GetWorkspaceSize(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA)
Definition: nmrLSqLin.h:241
static void AllocateWorkspace(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n, vctDynamicVector< CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:283
nmrLSqLinSolutionDynamic(size_t ma, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:477
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
TypeIWork IWorkspaceMemory
Definition: nmrLSqLin.h:1697
nmrLSqLinSolutionDynamic(size_t ma, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:496
const vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & GetX(void) const
Definition: nmrLSqLin.h:1212
ThisType & Assign(const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeMatrixBase.h:475
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & GetWork(void)
Definition: nmrLSqLin.h:387
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > X
Definition: nmrLSqLin.h:150
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & Getb(void)
Definition: nmrLSqLin.h:369
Definition: nmrLSqLin.h:1666
static CISSTNETLIB_INTEGER GetWorkspaceSize(size_t ma, size_t me, size_t mg, size_t n)
Definition: nmrLSqLin.h:174
Declaration of vctFixedSizeMatrix.
void Allocate(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:1049
ThisType & Assign(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &other)
Definition: vctDynamicVectorBase.h:242
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > & GetG(void)
Definition: nmrLSqLin.h:366
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & Geth(void)
Definition: nmrLSqLin.h:375
TypeWork WorkspaceMemory
Definition: nmrLSqLin.h:1696
size_t m_N
Definition: nmrLSqLin.h:166
static void AllocateWorkspace(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVector< CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:307
TypeRNormE RNormE
Definition: nmrLSqLin.h:1720
size_t m_Ma
Definition: nmrLSqLin.h:163
size_t size_type
Definition: vctContainerTraits.h:35
void SetRef(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:1103
const TypeRNormE & GetRNormE(void) const
Definition: nmrLSqLin.h:1775
vctDynamicMatrix< CISSTNETLIB_DOUBLE > InputMemory
Definition: nmrLSqLin.h:139
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > h
Definition: nmrLSqLin.h:149
Definition: nmrLSqLin.h:1676
Definition: nmrLSqLin.h:1673
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:546
Definition: nmrLSqLin.h:1672
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:965
static CISSTNETLIB_INTEGER GetIWorkspaceSize(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG)
Definition: nmrLSqLin.h:271
TypeInput InputMemory
Definition: nmrLSqLin.h:1714
CISSTNETLIB_INTEGER GetN(void)
Definition: nmrLSqLin.h:402
void Allocate(size_t ma, size_t me, size_t mg, size_t n)
Definition: nmrLSqLin.h:1011
static void AllocateIWorkspace(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVector< CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:314
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &E, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSqLin.h:910
TypeRNorm & GetRNorm(void)
Definition: nmrLSqLin.h:1744
ColumnRefType Column(size_type index)
Definition: vctDynamicMatrixBase.h:233
Definition: nmrLSqLin.h:354
Definition: nmrLSqLin.h:115
void SetRef(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &work, vctDynamicMatrixBase< _matrixOwnerTypeI, CISSTNETLIB_DOUBLE > &input, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &x)
Definition: nmrLSqLin.h:1178
ThisType & Assign(const vctFixedSizeConstVectorBase< _size, __stride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeVectorBase.h:274
void SetSize(size_type size)
Definition: vctDynamicVector.h:315
vctFixedSizeVector< CISSTNETLIB_DOUBLE, _n > TypeX
Definition: nmrLSqLin.h:1689
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > RNormE
Definition: nmrLSqLin.h:152
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:462
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > G
Definition: nmrLSqLin.h:146
TypeWork & GetWork(void)
Definition: nmrLSqLin.h:1750
void Malloc(size_t ma, size_t me, size_t mg, size_t n, bool allocateWorkspace, bool allocateInput, bool allocateOutput)
Definition: nmrLSqLin.h:1158
Definition: nmrLSqLin.h:1671
CISSTNETLIB_INTEGER GetMg(void)
Definition: nmrLSqLin.h:399
static void AllocateWorkspace(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicVector< CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:297
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:836
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:744
size_type size(void) const
Definition: vctDynamicConstVectorBase.h:164
nmrLSqLinSolutionDynamic(size_t ma, size_t mg, size_t n)
Definition: nmrLSqLin.h:426
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:885
const vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & GetRNorm(void) const
Definition: nmrLSqLin.h:1215
vctFixedSizeVector< CISSTNETLIB_DOUBLE, _ma+_me > TypeRNorm
Definition: nmrLSqLin.h:1690
vctFixedSizeMatrixRef< CISSTNETLIB_DOUBLE, _ma, _n, 1, _ma > TypeA
Definition: nmrLSqLin.h:1677
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
TypeX X
Definition: nmrLSqLin.h:1718
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSqLin.h:810
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:600
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > Work
Definition: nmrLSqLin.h:153
Definition: nmrLSqLin.h:1675
vctFixedSizeVector< CISSTNETLIB_INTEGER, LIWORK > TypeIWork
Definition: nmrLSqLin.h:1688
CISSTNETLIB_INTEGER GetMe(void)
Definition: nmrLSqLin.h:396
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > b
Definition: nmrLSqLin.h:147
TypeIWork & GetIWork(void)
Definition: nmrLSqLin.h:1753
static CISSTNETLIB_INTEGER QueryWorkspaceSize_LS(size_t ma, size_t n)
Definition: nmrLSqLin.h:204
An implementation of the ``abstract'' vctFixedSizeMatrixBase.
Definition: vctFixedSizeMatrixRef.h:46
nmrLSqLinSolutionDynamic(size_t ma, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:563
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
vctFixedSizeMatrix< CISSTNETLIB_DOUBLE, _ma+_me+_mg, _n+1, VCT_COL_MAJOR > TypeInput
Definition: nmrLSqLin.h:1691
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & Getf(void)
Definition: nmrLSqLin.h:372
const TypeRNormL & GetRNorm(void) const
Definition: nmrLSqLin.h:1772
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &E, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSqLin.h:621
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > RNormL
Definition: nmrLSqLin.h:151
Friend(nmrLSqLinSolutionFixedSize< _ma, _me, _mg, _n > &insolution)
Definition: nmrLSqLin.h:1739
#define cmnThrow(a)
Definition: MinimalCmn.h:4
nmrLSqLinSolutionDynamic(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:678
CISSTNETLIB_INTEGER nmrLSqLin(vctDynamicMatrixBase< _matrixOwnerType, CISSTNETLIB_DOUBLE > &A, vctDynamicVectorBase< _vectorOwnerType, CISSTNETLIB_DOUBLE > &b, nmrLSqLinSolutionDynamic &solution)
Definition: nmrLSqLin.h:1244
const TypeX & GetX(void) const
Definition: nmrLSqLin.h:1769
vctFixedSizeVectorRef< CISSTNETLIB_DOUBLE,(_mg==0)?1:_mg, 1 > Typeh
Definition: nmrLSqLin.h:1683
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A)
Definition: nmrLSqLin.h:721
nmrLSqLinSolutionDynamic(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:658
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A)
Definition: nmrLSqLin.h:448
pointer Pointer(index_type index=0)
Definition: vctDynamicVectorBase.h:155
static void AllocateIWorkspace(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVector< CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:334
vctDynamicVector< CISSTNETLIB_DOUBLE > & GetRNorm(void)
Definition: nmrLSqLin.h:381
vctDynamicVector< CISSTNETLIB_INTEGER > IWorkspaceMemory
Definition: nmrLSqLin.h:121
TypeInput & GetInput(void)
Definition: nmrLSqLin.h:1747
Definition: nmrLSqLin.h:1735
ThisType & Assign(const vctDynamicConstMatrixBase< __matrixOwnerType, value_type > &other)
Definition: vctDynamicMatrixBase.h:509
vctFixedSizeMatrixRef< CISSTNETLIB_DOUBLE,(_me==0)?1:_me, _n, 1,(_me==0)?1:_me > TypeE
Definition: nmrLSqLin.h:1679
Definition: nmrLSqLin.h:1669
vctFixedSizeMatrixRef< CISSTNETLIB_DOUBLE,(_mg==0)?1:_mg, _n, 1,(_mg==0)?1:_mg > TypeG
Definition: nmrLSqLin.h:1680
void Allocate(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:1028
vctFixedSizeVectorRef< CISSTNETLIB_DOUBLE, _ma, 1 > Typeb
Definition: nmrLSqLin.h:1681
vctDynamicMatrixRef< CISSTNETLIB_DOUBLE > & GetA(void)
Definition: nmrLSqLin.h:360
vctDynamicVector< CISSTNETLIB_DOUBLE > RNorm
Definition: nmrLSqLin.h:126
vctFixedSizeVectorRef< CISSTNETLIB_DOUBLE, _ma, 1 > TypeRNormL
Definition: nmrLSqLin.h:1685
void SetRef(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:1080
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:766
static CISSTNETLIB_INTEGER GetIWorkspaceSize(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG)
Definition: nmrLSqLin.h:255
static void AllocateIWorkspace(CISSTNETLIB_INTEGER ma, CISSTNETLIB_INTEGER me, CISSTNETLIB_INTEGER mg, CISSTNETLIB_INTEGER n, vctDynamicVector< CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:287
vctDynamicVectorRef< CISSTNETLIB_INTEGER > IWork
Definition: nmrLSqLin.h:154
vctFixedSizeVectorRef< CISSTNETLIB_DOUBLE,(_me==0)?1:_me, 1 > Typef
Definition: nmrLSqLin.h:1682
TypeRNorm RNorm
Definition: nmrLSqLin.h:1701
static CISSTNETLIB_INTEGER GetIWorkspaceSize(size_t CMN_UNUSED(ma), size_t me, size_t mg, size_t n)
Definition: nmrLSqLin.h:191
vctDynamicVector< CISSTNETLIB_DOUBLE > OutputMemory
Definition: nmrLSqLin.h:125
nmrLSqLinSolutionFixedSize()
Definition: nmrLSqLin.h:1761
void SetRef(size_t ma, size_t me, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:1133
pointer Pointer(size_type index=0)
Definition: vctFixedSizeVectorBase.h:226
Definition: nmrLSqLin.h:1670
static CISSTNETLIB_INTEGER GetWorkspaceSize(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG)
Definition: nmrLSqLin.h:249
vctDynamicVectorRef< CISSTNETLIB_DOUBLE > f
Definition: nmrLSqLin.h:148
Declaration of the template function cmnThrow.
void SetRef(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:990
TypeRNormL RNormL
Definition: nmrLSqLin.h:1719
ColumnRefType Column(size_type index)
Definition: vctFixedSizeMatrixBase.h:249
const bool VCT_COL_MAJOR
Definition: vctForwardDeclarations.h:46
size_t m_Me
Definition: nmrLSqLin.h:164
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &E, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_INTEGER > &inIWork)
Definition: nmrLSqLin.h:640
Friend(nmrLSqLinSolutionDynamic &insolution)
Definition: nmrLSqLin.h:358
static void AllocateWorkspace(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &inA, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &inE, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &inG, vctDynamicVector< CISSTNETLIB_DOUBLE > &inWork)
Definition: nmrLSqLin.h:326
nmrLSqLinSolutionDynamic(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G)
Definition: nmrLSqLin.h:530
vctDynamicMatrix< CISSTNETLIB_DOUBLE > & GetInput(void)
Definition: nmrLSqLin.h:384
nmrLSqLinSolutionDynamic(size_t ma, size_t me, size_t mg, size_t n)
Definition: nmrLSqLin.h:431
CISSTNETLIB_INTEGER GetMa(void)
Definition: nmrLSqLin.h:393
TypeX & GetX(void)
Definition: nmrLSqLin.h:1741
const vctDynamicVectorRef< CISSTNETLIB_DOUBLE > & GetRNormE(void) const
Definition: nmrLSqLin.h:1218
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctFixedSizeMatrixBase.h:161
void Allocate(vctDynamicMatrixBase< _matrixOwnerTypeA, CISSTNETLIB_DOUBLE > &A, vctDynamicMatrixBase< _matrixOwnerTypeE, CISSTNETLIB_DOUBLE > &E, vctDynamicMatrixBase< _matrixOwnerTypeG, CISSTNETLIB_DOUBLE > &G, vctDynamicVectorBase< _vectorOwnerTypeWork, CISSTNETLIB_DOUBLE > &inWork, vctDynamicVectorBase< _vectorOwnerTypeIWork, CISSTNETLIB_DOUBLE > &inIWork)
Definition: nmrLSqLin.h:938
Definition: vctDynamicVectorBase.h:61
nmrLSqLinSolutionDynamic(size_t ma, size_t mg, size_t n, vctDynamicVectorBase< _vectorOwnerTypeX, CISSTNETLIB_DOUBLE > &inX)
Definition: nmrLSqLin.h:583
nmrLSqLinSolutionDynamic(size_t ma, size_t n)
Definition: nmrLSqLin.h:421