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