10 #ifndef EIGEN_TRIANGULAR_SOLVER_VECTOR_H
11 #define EIGEN_TRIANGULAR_SOLVER_VECTOR_H
17 template<
typename LhsScalar,
typename RhsScalar,
typename Index,
int Mode,
bool Conjugate,
int StorageOrder>
25 >::
run(
size, _lhs, lhsStride, rhs);
30 template<
typename LhsScalar,
typename RhsScalar,
typename Index,
int Mode,
bool Conjugate>
51 IsLower ? pi<size : pi>0;
52 IsLower ? pi+=PanelWidth : pi-=PanelWidth)
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;
88 template<
typename LhsScalar,
typename RhsScalar,
typename Index,
int Mode,
bool Conjugate>
107 IsLower ? pi<size : pi>0;
108 IsLower ? pi+=PanelWidth : 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;
120 rhs[
i] /= cjLhs.coeff(
i,
i);
122 Index r = actualPanelWidth - k - 1;
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));
148 #endif // EIGEN_TRIANGULAR_SOLVER_VECTOR_H