10#ifndef EIGEN_BANDMATRIX_H
11#define EIGEN_BANDMATRIX_H
17template<
typename Derived>
35 typedef typename DenseMatrixType::StorageIndex StorageIndex;
41 DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic))
44 SizeAtCompileTime = EIGEN_SIZE_MIN_PREFER_DYNAMIC(RowsAtCompileTime,ColsAtCompileTime)
60 inline const CoefficientsType&
coeffs()
const {
return derived().coeffs(); }
70 EIGEN_STATIC_ASSERT((Options&
RowMajor)==0,THIS_METHOD_IS_ONLY_FOR_COLUMN_MAJOR_MATRICES);
79 len = std::max<Index>(0,
coeffs().rows() - (i + 1 -
rows() +
subs()));
96 DiagonalSize = (RowsAtCompileTime==Dynamic || ColsAtCompileTime==Dynamic)
99 ? EIGEN_SIZE_MIN_PREFER_DYNAMIC(ColsAtCompileTime, RowsAtCompileTime + ActualIndex)
100 : EIGEN_SIZE_MIN_PREFER_DYNAMIC(RowsAtCompileTime, ColsAtCompileTime - ActualIndex))
123 eigen_assert((i<0 && -i<=
subs()) || (i>=0 && i<=
supers()));
130 eigen_assert((i<0 && -i<=
subs()) || (i>=0 && i<=
supers()));
134 template<
typename Dest>
inline void evalTo(
Dest&
dst)
const
139 for (Index i=1; i<=
supers();++i)
141 for (Index i=1; i<=
subs();++i)
145 DenseMatrixType toDenseMatrix()
const
177template<
typename _Scalar,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
180 typedef _Scalar Scalar;
182 typedef Eigen::Index StorageIndex;
185 RowsAtCompileTime =
_Rows,
186 ColsAtCompileTime =
_Cols,
187 MaxRowsAtCompileTime =
_Rows,
188 MaxColsAtCompileTime =
_Cols,
193 DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic)) ? 1 + Supers + Subs : Dynamic
198template<
typename _Scalar,
int Rows,
int Cols,
int Supers,
int Subs,
int Options>
214 inline Index
rows()
const {
return m_rows.value(); }
217 inline Index
cols()
const {
return m_coeffs.cols(); }
220 inline Index
supers()
const {
return m_supers.value(); }
223 inline Index
subs()
const {
return m_subs.value(); }
225 inline const CoefficientsType& coeffs()
const {
return m_coeffs; }
226 inline CoefficientsType& coeffs() {
return m_coeffs; }
230 CoefficientsType m_coeffs;
231 internal::variable_if_dynamic<Index, Rows> m_rows;
232 internal::variable_if_dynamic<Index, Supers> m_supers;
233 internal::variable_if_dynamic<Index, Subs> m_subs;
236template<
typename _CoefficientsType,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
237class BandMatrixWrapper;
239template<
typename _CoefficientsType,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
242 typedef typename _CoefficientsType::Scalar Scalar;
243 typedef typename _CoefficientsType::StorageKind StorageKind;
244 typedef typename _CoefficientsType::StorageIndex StorageIndex;
247 RowsAtCompileTime =
_Rows,
248 ColsAtCompileTime =
_Cols,
249 MaxRowsAtCompileTime =
_Rows,
250 MaxColsAtCompileTime =
_Cols,
255 DataRowsAtCompileTime = ((Supers!=Dynamic) && (Subs!=Dynamic)) ? 1 + Supers + Subs : Dynamic
260template<
typename _CoefficientsType,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
273 EIGEN_UNUSED_VARIABLE(
cols);
278 inline Index
rows()
const {
return m_rows.value(); }
281 inline Index
cols()
const {
return m_coeffs.cols(); }
284 inline Index
supers()
const {
return m_supers.value(); }
287 inline Index
subs()
const {
return m_subs.value(); }
289 inline const CoefficientsType& coeffs()
const {
return m_coeffs; }
293 const CoefficientsType& m_coeffs;
311template<
typename Scalar,
int Size,
int Options>
315 typedef typename Base::StorageIndex StorageIndex;
324 {
return Base::template
diagonal<-1>(); }
326 {
return Base::template
diagonal<-1>(); }
333template<
typename _Scalar,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
340template<
typename _CoefficientsType,
int _Rows,
int _Cols,
int _Supers,
int _Subs,
int _Options>
342 :
public evaluator_traits_base<BandMatrixWrapper<_CoefficientsType,_Rows,_Cols,_Supers,_Subs,_Options> >
Definition ForwardDeclarations.h:89
Pseudo expression representing a solving operation.
Definition Solve.h:63
Definition BandMatrix.h:19
Index subs() const
Definition BandMatrix.h:57
Block< CoefficientsType, Dynamic, 1 > col(Index i)
Definition BandMatrix.h:68
Index supers() const
Definition BandMatrix.h:54
const Block< const CoefficientsType, 1, Dynamic > diagonal(Index i) const
Definition BandMatrix.h:128
const DiagonalIntReturnType< N >::Type diagonal() const
Definition BandMatrix.h:115
const CoefficientsType & coeffs() const
Definition BandMatrix.h:60
EIGEN_DEVICE_FUNC Index cols() const
Definition EigenBase.h:61
EIGEN_DEVICE_FUNC Index rows() const
Definition EigenBase.h:58
CoefficientsType & coeffs()
Definition BandMatrix.h:63
DiagonalIntReturnType< N >::Type diagonal()
Definition BandMatrix.h:109
EIGEN_DEVICE_FUNC Derived & derived()
Definition EigenBase.h:44
Block< CoefficientsType, 1, SizeAtCompileTime > diagonal()
Definition BandMatrix.h:84
Block< CoefficientsType, 1, Dynamic > diagonal(Index i)
Definition BandMatrix.h:121
const Block< const CoefficientsType, 1, SizeAtCompileTime > diagonal() const
Definition BandMatrix.h:88
Definition BandMatrix.h:262
Index subs() const
Definition BandMatrix.h:287
Index cols() const
Definition BandMatrix.h:281
Index supers() const
Definition BandMatrix.h:284
Index rows() const
Definition BandMatrix.h:278
Represents a rectangular matrix with a banded storage.
Definition BandMatrix.h:200
Index supers() const
Definition BandMatrix.h:220
Index rows() const
Definition BandMatrix.h:214
Index subs() const
Definition BandMatrix.h:223
Index cols() const
Definition BandMatrix.h:217
Represents a tridiagonal matrix with a compact banded storage.
Definition BandMatrix.h:313
Definition XprHelper.h:67
@ SelfAdjoint
Used in BandMatrix and SelfAdjointView to indicate that the matrix is self-adjoint.
Definition Constants.h:220
@ RowMajor
Storage order is row major (see TopicStorageOrders).
Definition Constants.h:322
const unsigned int LvalueBit
Means the expression has a coeffRef() method, i.e.
Definition Constants.h:138
Definition Constants.h:511
The type used to identify a dense storage.
Definition Constants.h:490
Common base class for all classes T such that MatrixBase has an operator=(T) and a constructor Matrix...
Definition EigenBase.h:29
Eigen::Index Index
The interface type of indices.
Definition EigenBase.h:37
EIGEN_DEVICE_FUNC Index cols() const
Definition EigenBase.h:61
EIGEN_DEVICE_FUNC Index rows() const
Definition EigenBase.h:58
EIGEN_DEVICE_FUNC Derived & derived()
Definition EigenBase.h:44
EIGEN_DEVICE_FUNC Index size() const
Definition EigenBase.h:65
Holds information about the various numeric (i.e.
Definition NumTraits.h:108
Definition AssignEvaluator.h:677
Definition BandMatrix.h:91
Definition BandMatrix.h:331
Definition AssignEvaluator.h:675
Definition CoreEvaluators.h:62
Definition CoreEvaluators.h:75
Definition ForwardDeclarations.h:17