36 static void run(
Index size,
const LhsScalar* _lhs,
Index lhsStride, RhsScalar* rhs)
49 static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
50 for(
Index pi=IsLower ? 0 : size;
51 IsLower ? pi<size : pi>0;
52 IsLower ? pi+=PanelWidth : pi-=PanelWidth)
54 Index actualPanelWidth = (std::min)(IsLower ? size - pi : pi, PanelWidth);
56 Index r = IsLower ? pi : size - pi;
62 Index startRow = IsLower ? pi : pi-actualPanelWidth;
63 Index startCol = IsLower ? 0 : pi;
67 LhsMapper(&lhs.coeffRef(startRow,startCol), lhsStride),
68 RhsMapper(rhs + startCol, 1),
73 for(
Index k=0; k<actualPanelWidth; ++k)
75 Index i = IsLower ? pi+k : pi-k-1;
76 Index s = IsLower ? pi : i+1;
80 if((!(Mode &
UnitDiag)) && numext::not_equal_strict(rhs[i],RhsScalar(0)))
94 static void run(
Index size,
const LhsScalar* _lhs,
Index lhsStride, RhsScalar* rhs)
104 static const Index PanelWidth = EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH;
106 for(
Index pi=IsLower ? 0 : size;
107 IsLower ? pi<size : pi>0;
108 IsLower ? pi+=PanelWidth : pi-=PanelWidth)
110 Index actualPanelWidth = (std::min)(IsLower ? size - pi : pi, PanelWidth);
111 Index startBlock = IsLower ? pi : pi-actualPanelWidth;
112 Index endBlock = IsLower ? pi + actualPanelWidth : 0;
114 for(
Index k=0; k<actualPanelWidth; ++k)
116 Index i = IsLower ? pi+k : pi-k-1;
117 if(numext::not_equal_strict(rhs[i],RhsScalar(0)))
120 rhs[i] /= cjLhs.coeff(i,i);
122 Index r = actualPanelWidth - k - 1;
123 Index s = IsLower ? i+1 : i-r;
128 Index r = IsLower ? size - endBlock : startBlock;
136 LhsMapper(&lhs.coeffRef(endBlock,startBlock), lhsStride),
137 RhsMapper(rhs+startBlock, 1),
138 rhs+endBlock, 1, RhsScalar(-1));