16 __gemm<float, basic_rmatrix<float> >
23 #if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
24 SGEMM (bTrans1 ? Chars::pT() : Chars::pN(), 1, bTrans2 ? Chars::pT() : Chars::pN(), 1,
26 SGEMM (bTrans1 ? Chars::pT() : Chars::pN(), bTrans2 ? Chars::pT() : Chars::pN(),
28 bTrans1 ? ml._pn() : ml._pm(),
29 bTrans2 ? mr._pm() : mr._pn(),
30 bTrans1 ? ml._pm() : ml._pn(),
40 __gemm<double, basic_rmatrix<double> >
47 #if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
48 DGEMM (bTrans1 ? Chars::pT() : Chars::pN(), 1, bTrans2 ? Chars::pT() : Chars::pN(), 1,
50 DGEMM (bTrans1 ? Chars::pT() : Chars::pN(), bTrans2 ? Chars::pT() : Chars::pN(),
52 bTrans1 ? ml._pn() : ml._pm(),
53 bTrans2 ? mr._pm() : mr._pn(),
54 bTrans1 ? ml._pm() : ml._pn(),
72 SSYMM (bLeft ? Chars::pL() : Chars::pR(),
73 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
77 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
80 mRes._pm(), mRes._pn(),
98 DSYMM (bLeft ? Chars::pL() : Chars::pR(),
99 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
103 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
106 mRes._pm(), mRes._pn(),
116 __syrk<float, basic_srsmatrix<float> >
119 const float* pA,
tint ldA,
123 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
126 bTransp ? Chars::pT() : Chars::pN(),
127 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
130 m._pm(), &k, &alpha, pA, &ldA, &beta, m, m._pld());
135 __syrk<double, basic_srsmatrix<double> >
137 double alpha,
tint k,
138 const double* pA,
tint ldA,
142 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
145 bTransp ? Chars::pT() : Chars::pN(),
146 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
149 m._pm(), &k, &alpha, pA, &ldA, &beta, m, m._pld());
154 __syr2k<float, basic_srsmatrix<float> >
157 const float* pA,
tint ldA,
158 const float* pB,
tint ldB,
162 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
165 bTransp ? Chars::pT() : Chars::pN(),
166 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
169 m._pm(), &k, &alpha, pA, &ldA, pB, &ldB, &beta, m, m._pld());
174 __syr2k<double, basic_srsmatrix<double> >
176 double alpha,
tint k,
177 const double* pA,
tint ldA,
178 const double* pB,
tint ldB,
182 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
185 bTransp ? Chars::pT() : Chars::pN(),
186 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
189 m._pm(), &k, &alpha, pA, &ldA, pB, &ldB, &beta, m, m._pld());
202 const tint nK = _cvm_min<tint>(nM, nN);
213 SGEQRF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
214 lWork =
static_cast<tint>(dWork);
218 SGEQRF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
224 for (
tint col = row; col < nN +
CVM0; ++col)
225 mR(row,col) = mQ(row,col);
229 SORGQR (&nM, &nK, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
230 lWork =
static_cast<tint>(dWork);
231 if (lWork > vWork.size()) vWork.resize(lWork);
234 SORGQR (&nM, &nK, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
248 const tint nK = _cvm_min<tint>(nM, nN);
259 DGEQRF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
260 lWork =
static_cast<tint>(dWork);
264 DGEQRF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
270 for (
tint col = row; col < nN +
CVM0; ++col)
271 mR(row,col) = mQ(row,col);
275 DORGQR (&nM, &nK, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
276 lWork =
static_cast<tint>(dWork);
277 if (lWork > vWork.size()) vWork.resize(lWork);
280 DORGQR (&nM, &nK, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
294 const tint nK = _cvm_min<tint>(nM, nN);
310 SGEQRF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
311 lWork =
static_cast<tint>(dWork);
315 SGEQRF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
320 for (row =
CVM0; row < nK +
CVM0; ++row)
321 for (col = row; col < nN +
CVM0; ++col)
322 mR(row,col) = mA(row,col);
326 SORGQR (&nM, &nM, &nK, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
327 lWork =
static_cast<tint>(dWork);
328 if (lWork > vWork.size()) vWork.resize(lWork);
331 SORGQR (&nM, &nM, &nK, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
336 mQ.
assign (CVM0, CVM0, mA);
338 for (row = CVM0; row < nM +
CVM0; ++row)
339 for (col = CVM0; col < nM +
CVM0; ++col)
340 mQ(row,col) = mA(row,col);
353 const tint nK = _cvm_min<tint>(nM, nN);
369 DGEQRF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
370 lWork =
static_cast<tint>(dWork);
374 DGEQRF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
379 for (row =
CVM0; row < nK +
CVM0; ++row)
380 for (col = row; col < nN +
CVM0; ++col)
381 mR(row,col) = mA(row,col);
385 DORGQR (&nM, &nM, &nK, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
386 lWork =
static_cast<tint>(dWork);
387 if (lWork > vWork.size()) vWork.resize(lWork);
390 DORGQR (&nM, &nM, &nK, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
395 mQ.
assign (CVM0, CVM0, mA);
397 for (row = CVM0; row < nM +
CVM0; ++row)
398 for (col = CVM0; col < nM +
CVM0; ++col)
399 mQ(row,col) = mA(row,col);
426 SGERQF (&nM, &nN, mQ, mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
427 lWork =
static_cast<tint>(dWork);
431 SGERQF (&nM, &nN, mQ, mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
436 for (row =
CVM0; row < nM +
CVM0; ++row)
437 for (col = row; col < nM +
CVM0; ++col)
438 mR(row,col) = mQ(row,nN - nM + col);
442 SORGRQ (&nM, &nN, &nM, mQ, mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
443 lWork =
static_cast<tint>(dWork);
444 if (lWork > vWork.size()) vWork.resize(lWork);
447 SORGRQ (&nM, &nN, &nM, mQ, mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
474 DGERQF (&nM, &nN, mQ, mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
475 lWork =
static_cast<tint>(dWork);
479 DGERQF (&nM, &nN, mQ, mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
484 for (row =
CVM0; row < nM +
CVM0; ++row)
485 for (col = row; col < nM +
CVM0; ++col)
486 mR(row,col) = mQ(row,nN - nM + col);
490 DORGRQ (&nM, &nN, &nM, mQ, mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
491 lWork =
static_cast<tint>(dWork);
492 if (lWork > vWork.size()) vWork.resize(lWork);
495 DORGRQ (&nM, &nN, &nM, mQ, mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
525 SGERQF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
526 lWork =
static_cast<tint>(dWork);
530 SGERQF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
535 for (row =
CVM0; row < nM +
CVM0; ++row)
536 for (col = nN - nM + row; col < nN +
CVM0; ++col)
537 mR(row,col) = mA(row,col);
541 SORGRQ (&nM, &nN, &nM, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
542 lWork =
static_cast<tint>(dWork);
543 if (lWork > vWork.size()) vWork.resize(lWork);
546 SORGRQ (&nM, &nN, &nM, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
549 for (row = CVM0; row < nM +
CVM0; ++row)
550 for (col = CVM0; col < nN +
CVM0; ++col)
551 mQ(nN - nM + row,col) = mA(row,col);
580 DGERQF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
581 lWork =
static_cast<tint>(dWork);
585 DGERQF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
590 for (row =
CVM0; row < nM +
CVM0; ++row)
591 for (col = nN - nM + row; col < nN +
CVM0; ++col)
592 mR(row,col) = mA(row,col);
596 DORGRQ (&nM, &nN, &nM, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
597 lWork =
static_cast<tint>(dWork);
598 if (lWork > vWork.size()) vWork.resize(lWork);
601 DORGRQ (&nM, &nN, &nM, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
604 for (row = CVM0; row < nM +
CVM0; ++row)
605 for (col = CVM0; col < nN +
CVM0; ++col)
606 mQ(nN - nM + row,col) = mA(row,col);
620 const tint nK = _cvm_min<tint>(nM, nN);
631 SGELQF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
632 lWork =
static_cast<tint>(dWork);
636 SGELQF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
642 for (
tint row = col; row < nM +
CVM0; ++row)
643 mL(row,col) = mQ(row,col);
647 SORGLQ (&nK, &nN, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
648 lWork =
static_cast<tint>(dWork);
649 if (lWork > vWork.size()) vWork.resize(lWork);
652 SORGLQ (&nK, &nN, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
665 const tint nK = _cvm_min<tint>(nM, nN);
676 DGELQF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
677 lWork =
static_cast<tint>(dWork);
681 DGELQF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
687 for (
tint row = col; row < nM +
CVM0; ++row)
688 mL(row,col) = mQ(row,col);
692 DORGLQ (&nK, &nN, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
693 lWork =
static_cast<tint>(dWork);
694 if (lWork > vWork.size()) vWork.resize(lWork);
697 DORGLQ (&nK, &nN, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
711 const tint nK = _cvm_min<tint>(nM, nN);
727 SGELQF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
728 lWork =
static_cast<tint>(dWork);
732 SGELQF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
738 for (
tint row = col; row < nM +
CVM0; ++row)
739 mL(row,col) = mA(row,col);
743 SORGLQ (&nN, &nN, &nK, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
744 lWork =
static_cast<tint>(dWork);
745 if (lWork > vWork.size()) vWork.resize(lWork);
748 SORGLQ (&nN, &nN, &nK, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
753 mQ.
assign (CVM0, CVM0, mA);
755 for (row = CVM0; row < nN +
CVM0; ++row)
756 for (col = CVM0; col < nN +
CVM0; ++col)
757 mQ(row,col) = mA(row,col);
770 const tint nK = _cvm_min<tint>(nM, nN);
786 DGELQF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
787 lWork =
static_cast<tint>(dWork);
791 DGELQF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
797 for (
tint row = col; row < nM +
CVM0; ++row)
798 mL(row,col) = mA(row,col);
802 DORGLQ (&nN, &nN, &nK, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
803 lWork =
static_cast<tint>(dWork);
804 if (lWork > vWork.size()) vWork.resize(lWork);
807 DORGLQ (&nN, &nN, &nK, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
812 mQ.
assign (CVM0, CVM0, mA);
814 for (row = CVM0; row < nN +
CVM0; ++row)
815 for (col = CVM0; col < nN +
CVM0; ++col)
816 mQ(row,col) = mA(row,col);
830 const tint nK = _cvm_min<tint>(nM, nN);
841 SGEQLF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
842 lWork =
static_cast<tint>(dWork);
846 SGEQLF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
852 for (
tint row = col; row < nK +
CVM0; ++row)
853 mL(row,col) = mQ(nM - nN + row,col);
857 SORGQL (&nM, &nN, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
858 lWork =
static_cast<tint>(dWork);
859 if (lWork > vWork.size()) vWork.resize(lWork);
862 SORGQL (&nM, &nN, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
877 const tint nK = _cvm_min<tint>(nM, nN);
888 DGEQLF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
889 lWork =
static_cast<tint>(dWork);
893 DGEQLF (&nM, &nN, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
899 for (
tint row = col; row < nK +
CVM0; ++row)
900 mL(row,col) = mQ(nM - nN + row,col);
904 DORGQL (&nM, &nN, &nK, mQ._pd(), mQ._pld(), vTau, &dWork, &lWork, &nOutInfo);
905 lWork =
static_cast<tint>(dWork);
906 if (lWork > vWork.size()) vWork.resize(lWork);
909 DORGQL (&nM, &nN, &nK, mQ._pd(), mQ._pld(), vTau, vWork, &lWork, &nOutInfo);
939 SGEQLF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
940 lWork =
static_cast<tint>(dWork);
944 SGEQLF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
949 for (col =
CVM0; col < nN +
CVM0; ++col)
950 for (row = nM - nN + col; row < nM +
CVM0; ++row)
951 mL(row,col) = mA(row,col);
955 SORGQL (&nM, &nN, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
956 lWork =
static_cast<tint>(dWork);
957 if (lWork > vWork.size()) vWork.resize(lWork);
960 SORGQL (&nM, &nN, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
963 for (row = CVM0; row < nM +
CVM0; ++row)
964 for (col = CVM0; col < nN +
CVM0; ++col)
965 mQ(row,nM - nN + col) = mA(row,col);
994 DGEQLF (&nM, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
995 lWork =
static_cast<tint>(dWork);
999 DGEQLF (&nM, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
1004 for (col =
CVM0; col < nN +
CVM0; ++col)
1005 for (row = nM - nN + col; row < nM +
CVM0; ++row)
1006 mL(row,col) = mA(row,col);
1010 DORGQL (&nM, &nN, &nN, mA, mA._pld(), vTau, &dWork, &lWork, &nOutInfo);
1011 lWork =
static_cast<tint>(dWork);
1012 if (lWork > vWork.size()) vWork.resize(lWork);
1015 DORGQL (&nM, &nN, &nN, mA, mA._pld(), vTau, vWork, &lWork, &nOutInfo);
1018 for (row = CVM0; row < nM +
CVM0; ++row)
1019 for (col = CVM0; col < nN +
CVM0; ++col)
1020 mQ(row,nM - nN + col) = mA(row,col);
1033 const tint nM = mA.msize();
1034 const tint nN = mA.nsize();
1035 const tint nL = _cvm_min<tint>(nM, nN);
1036 const tint nK = _cvm_max<tint>(nM, nN);
1037 const tint nrhs = mB.nsize();
1041 const char* trans = transpose ? Chars::pT() : Chars::pN();
1043 mX.resize(nK, nrhs);
1048 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
1051 &nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(), &dWork, &lWork, &nOutInfo);
1053 lWork =
static_cast<tint>(dWork);
1057 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
1060 &nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(), vWork, &lWork, &nOutInfo);
1065 if ((!transpose && nM > nN) || (transpose && nM < nN))
1069 for (
tint row = nL + CVM0; row < nK +
CVM0; row++)
1071 vErr[col] += mX(row, col)*mX(row, col);
1074 mX.resize(nL, nrhs);
1087 const tint nM = mA.msize();
1088 const tint nN = mA.nsize();
1089 const tint nL = _cvm_min<tint>(nM, nN);
1090 const tint nK = _cvm_max<tint>(nM, nN);
1091 const tint nrhs = mB.nsize();
1095 const char* trans = transpose ? Chars::pT() : Chars::pN();
1097 mX.resize(nK, nrhs);
1102 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
1105 &nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(), &dWork, &lWork, &nOutInfo);
1107 lWork =
static_cast<tint>(dWork);
1111 #
if defined (CVM_PASS_STRING_LENGTH_TO_FTN_SUBROUTINES)
1114 &nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(), vWork, &lWork, &nOutInfo);
1119 if ((!transpose && nM > nN) || (transpose && nM < nN))
1123 for (
tint row = nL + CVM0; row < nK +
CVM0; row++)
1125 vErr[col] += mX(row, col)*mX(row, col);
1128 mX.resize(nL, nrhs);
1134 __gelsy<float, basic_rmatrix<float> >
1144 const tint nK = _cvm_max<tint>(nM, nN);
1154 SGELSY (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1155 jpvt, &rcond, &rank, &dWork, &lWork, &nOutInfo);
1157 lWork =
static_cast<tint>(dWork);
1160 SGELSY (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1161 jpvt, &rcond, &rank, vWork, &lWork, &nOutInfo);
1169 __gelsy<double, basic_rmatrix<double> >
1179 const tint nK = _cvm_max<tint>(nM, nN);
1189 DGELSY (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1190 jpvt, &rcond, &rank, &dWork, &lWork, &nOutInfo);
1192 lWork =
static_cast<tint>(dWork);
1195 DGELSY (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1196 jpvt, &rcond, &rank, vWork, &lWork, &nOutInfo);
1215 const tint nK = _cvm_max<tint>(nM, nN);
1224 SGELSS (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1225 vSV, &rcond, &rank, &dWork, &lWork, &nOutInfo);
1227 lWork =
static_cast<tint>(dWork);
1230 SGELSS (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1231 vSV, &rcond, &rank, vWork, &lWork, &nOutInfo);
1250 const tint nK = _cvm_max<tint>(nM, nN);
1259 DGELSS (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1260 vSV, &rcond, &rank, &dWork, &lWork, &nOutInfo);
1262 lWork =
static_cast<tint>(dWork);
1265 DGELSS (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1266 vSV, &rcond, &rank, vWork, &lWork, &nOutInfo);
1285 const tint nK = _cvm_max<tint>(nM, nN);
1295 SGELSD (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1296 vSV, &rcond, &rank, &dWork, &lWork, &iWork, &nOutInfo);
1298 lWork =
static_cast<tint>(dWork);
1302 SGELSD (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1303 vSV, &rcond, &rank, vWork, &lWork, viWork, &nOutInfo);
1322 const tint nK = _cvm_max<tint>(nM, nN);
1332 DGELSD (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1333 vSV, &rcond, &rank, &dWork, &lWork, &iWork, &nOutInfo);
1335 lWork =
static_cast<tint>(dWork);
1339 DGELSD (&nM, &nN, &nrhs, mA._pd(), mA._pld(), mX._pd(), mX._pld(),
1340 vSV, &rcond, &rank, vWork, &lWork, viWork, &nOutInfo);