11 #ifndef EIGEN_SPARSE_TRIANGULARVIEW_H
12 #define EIGEN_SPARSE_TRIANGULARVIEW_H
29 template <
typename MatrixType,
unsigned int Mode>
34 SkipLast = !SkipFirst,
36 HasUnitDiag = (Mode &
UnitDiag) ? 1 : 0
54 template <typename RhsType, typename DstType>
58 this->solveInPlace(dst);
62 template <
typename OtherDerived>
66 template <
typename OtherDerived>
72 template <
typename ArgType,
unsigned int Mode>
84 SkipLast = !SkipFirst,
86 HasUnitDiag = (Mode &
UnitDiag) ? 1 : 0
101 :
Base(xprEval.m_argImpl, outer),
103 m_containsDiag(
Base::outer() < xprEval.m_arg.innerSize()) {
105 while ((*
this) && ((HasUnitDiag || SkipDiag) ? this->index() <= outer : this->index() < outer))
107 if (HasUnitDiag) m_returnOne = m_containsDiag;
108 }
else if (HasUnitDiag && ((!Base::operator
bool()) || Base::index() >= Base::outer())) {
110 m_returnOne = m_containsDiag;
115 if (HasUnitDiag && m_returnOne)
119 if (HasUnitDiag && (!SkipFirst) && ((!Base::operator
bool()) || Base::index() >= Base::outer())) {
121 m_returnOne = m_containsDiag;
128 if (HasUnitDiag && m_returnOne)
return true;
130 return Base::operator
bool();
133 return (Base::operator
bool() && this->index() < this->outer());
135 return (Base::operator
bool() && this->index() <= this->outer());
142 if (HasUnitDiag && m_returnOne)
143 return internal::convert_index<StorageIndex>(Base::outer());
145 return Base::index();
148 if (HasUnitDiag && m_returnOne)
169 template <
typename Derived>
#define EIGEN_DEVICE_FUNC
Definition: Macros.h:892
#define EIGEN_STRONG_INLINE
Definition: Macros.h:834
#define EIGEN_SPARSE_PUBLIC_INTERFACE(Derived)
Definition: SparseUtil.h:39
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
An InnerIterator allows to loop over the element of any matrix expression.
Definition: CoreIterators.h:37
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:30
const TriangularView< const Derived, Mode > triangularView() const
Definition: SparseTriangularView.h:171
internal::remove_all_t< MatrixTypeNested > MatrixTypeNestedCleaned
Definition: SparseTriangularView.h:52
MatrixType::Nested MatrixTypeNested
Definition: SparseTriangularView.h:50
SparseMatrixBase< TriangularViewType > Base
Definition: SparseTriangularView.h:45
void solveInPlace(MatrixBase< OtherDerived > &other) const
void solveInPlace(SparseMatrixBase< OtherDerived > &other) const
std::remove_reference_t< MatrixTypeNested > MatrixTypeNestedNonRef
Definition: SparseTriangularView.h:51
TriangularView< MatrixType, Mode > TriangularViewType
Definition: SparseTriangularView.h:39
Definition: TriangularMatrix.h:163
Expression of a triangular part in a matrix.
Definition: TriangularMatrix.h:167
internal::traits< TriangularView >::Scalar Scalar
Definition: TriangularMatrix.h:170
EIGEN_STRONG_INLINE InnerIterator & operator++()
Definition: SparseTriangularView.h:114
bool m_containsDiag
Definition: SparseTriangularView.h:156
EvalIterator Base
Definition: SparseTriangularView.h:97
Index col() const
Definition: SparseTriangularView.h:140
bool m_returnOne
Definition: SparseTriangularView.h:155
Index row() const
Definition: SparseTriangularView.h:139
Scalar value() const
Definition: SparseTriangularView.h:147
EIGEN_STRONG_INLINE InnerIterator(const unary_evaluator &xprEval, Index outer)
Definition: SparseTriangularView.h:100
StorageIndex index() const
Definition: SparseTriangularView.h:141
@ UnitDiag
Definition: Constants.h:215
@ ZeroDiag
Definition: Constants.h:217
@ Lower
Definition: Constants.h:211
@ Upper
Definition: Constants.h:213
const unsigned int RowMajorBit
Definition: Constants.h:70
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 operator++(bfloat16 &a)
Definition: BFloat16.h:307
typename remove_all< T >::type remove_all_t
Definition: Meta.h:142
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE const T::Scalar * extract_data(const T &m)
Definition: BlasUtil.h:581
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
Definition: Eigen_Colamd.h:49
Definition: Constants.h:522
Definition: Constants.h:580
Definition: CoreEvaluators.h:118
Definition: CoreEvaluators.h:104
const ArgType & m_arg
Definition: SparseTriangularView.h:164
XprType::StorageIndex StorageIndex
Definition: SparseTriangularView.h:78
Index nonZerosEstimate() const
Definition: SparseTriangularView.h:94
TriangularView< ArgType, Mode > XprType
Definition: SparseTriangularView.h:74
XprType::Scalar Scalar
Definition: SparseTriangularView.h:77
evaluator< ArgType > m_argImpl
Definition: SparseTriangularView.h:163
evaluator< ArgType >::InnerIterator EvalIterator
Definition: SparseTriangularView.h:79
unary_evaluator(const XprType &xpr)
Definition: SparseTriangularView.h:92
Definition: CoreEvaluators.h:82