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>
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;
88 template<
typename LhsScalar,
typename RhsScalar,
typename Index,
int Mode,
bool Conjugate>
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;
118 rhs[i] /= cjLhs.coeff(i,i);
120 Index r = actualPanelWidth - k - 1;
121 Index s = IsLower ? i+1 : i-r;
125 Index r = IsLower ? size - endBlock : startBlock;
133 LhsMapper(&lhs.coeffRef(endBlock,startBlock), lhsStride),
134 RhsMapper(rhs+startBlock, 1),
135 rhs+endBlock, 1, RhsScalar(-1));
145 #endif // EIGEN_TRIANGULAR_SOLVER_VECTOR_H
A matrix or vector expression mapping an existing array of data.
static void run(Index size, const LhsScalar *_lhs, Index lhsStride, RhsScalar *rhs)
static constexpr size_t size(Tuple< Args... > &)
Provides access to the number of elements in a tuple as a compile-time constant expression.
static void run(Index size, const LhsScalar *_lhs, Index lhsStride, RhsScalar *rhs)
#define EIGEN_TUNE_TRIANGULAR_PANEL_WIDTH
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
const mpreal sum(const mpreal tab[], const unsigned long int n, int &status, mp_rnd_t mode=mpreal::get_default_rnd())
static void run(Index size, const LhsScalar *_lhs, Index lhsStride, RhsScalar *rhs)
Generic expression where a coefficient-wise unary operator is applied to an expression.
The matrix class, also used for vectors and row-vectors.
Convenience specialization of Stride to specify only an outer stride See class Map for some examples...
void run(Expr &expr, Dev &dev)