SkylineMatrixBase.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2008-2009 Guillaume Saupin <guillaume.saupin@cea.fr>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #ifndef EIGEN_SKYLINEMATRIXBASE_H
11 #define EIGEN_SKYLINEMATRIXBASE_H
12 
13 #include "SkylineUtil.h"
14 
15 namespace Eigen {
16 
26 template<typename Derived> class SkylineMatrixBase : public EigenBase<Derived> {
27 public:
28 
32 
33  enum {
55 
58 
76  };
77 
78 #ifndef EIGEN_PARSED_BY_DOXYGEN
79 
86 
90 
91  inline const Derived& derived() const {
92  return *static_cast<const Derived*> (this);
93  }
94 
95  inline Derived& derived() {
96  return *static_cast<Derived*> (this);
97  }
98 
99  inline Derived& const_cast_derived() const {
100  return *static_cast<Derived*> (const_cast<SkylineMatrixBase*> (this));
101  }
102 #endif // not EIGEN_PARSED_BY_DOXYGEN
103 
105  inline EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT {
106  return derived().rows();
107  }
108 
110  inline EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT {
111  return derived().cols();
112  }
113 
116  inline EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT {
117  return rows() * cols();
118  }
119 
122  inline Index nonZeros() const {
123  return derived().nonZeros();
124  }
125 
128  Index outerSize() const {
129  return (int(Flags) & RowMajorBit) ? this->rows() : this->cols();
130  }
131 
134  Index innerSize() const {
135  return (int(Flags) & RowMajorBit) ? this->cols() : this->rows();
136  }
137 
138  bool isRValue() const {
139  return m_isRValue;
140  }
141 
142  Derived& markAsRValue() {
143  m_isRValue = true;
144  return derived();
145  }
146 
148  /* TODO check flags */
149  }
150 
151  inline Derived & operator=(const Derived& other) {
152  this->operator=<Derived > (other);
153  return derived();
154  }
155 
156  template<typename OtherDerived>
157  inline void assignGeneric(const OtherDerived& other) {
158  derived().resize(other.rows(), other.cols());
159  for (Index row = 0; row < rows(); row++)
160  for (Index col = 0; col < cols(); col++) {
161  if (other.coeff(row, col) != Scalar(0))
162  derived().insert(row, col) = other.coeff(row, col);
163  }
164  derived().finalize();
165  }
166 
167  template<typename OtherDerived>
169  //TODO
170  }
171 
172  template<typename Lhs, typename Rhs>
174 
175  friend std::ostream & operator <<(std::ostream & s, const SkylineMatrixBase& m) {
176  s << m.derived();
177  return s;
178  }
179 
180  template<typename OtherDerived>
183 
185  template<typename DenseDerived>
186  void evalTo(MatrixBase<DenseDerived>& dst) const {
187  dst.setZero();
188  for (Index i = 0; i < rows(); i++)
189  for (Index j = 0; j < rows(); j++)
190  dst(i, j) = derived().coeff(i, j);
191  }
192 
194  return derived();
195  }
196 
203  return typename internal::eval<Derived>::type(derived());
204  }
205 
206 protected:
208 };
209 
210 } // end namespace Eigen
211 
212 #endif // EIGEN_SKYLINEMATRIXBASE_H
Matrix3f m
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
#define EIGEN_STRONG_INLINE
Definition: Macros.h:917
EIGEN_DEVICE_FUNC Derived & setZero()
void assignGeneric(const OtherDerived &other)
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
Definition: NumTraits.h:232
internal::traits< Derived >::Scalar Scalar
const unsigned int RowMajorBit
Definition: Constants.h:66
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime > toDense() const
Derived & operator=(const Derived &other)
internal::index< StorageKind >::type Index
Matrix< Scalar, EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime), EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime) > SquareMatrixType
void evalTo(MatrixBase< DenseDerived > &dst) const
m row(1)
#define EIGEN_NOEXCEPT
Definition: Macros.h:1418
EIGEN_STRONG_INLINE const internal::eval< Derived, IsSkyline >::type eval() const
Derived & operator=(const SkylineMatrixBase< OtherDerived > &other)
internal::traits< Derived >::StorageKind StorageKind
RealScalar s
#define EIGEN_CONSTEXPR
Definition: Macros.h:787
const SkylineProductReturnType< Derived, OtherDerived >::Type operator*(const MatrixBase< OtherDerived > &other) const
const Derived & derived() const
DenseIndex ret
friend std::ostream & operator<<(std::ostream &s, const SkylineMatrixBase &m)
Base class of any skyline matrices or skyline expressions.
m col(1)
The matrix class, also used for vectors and row-vectors.
NumTraits< Scalar >::Real RealScalar
#define EIGEN_SIZE_MAX(a, b)
Definition: Macros.h:1310
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:48
Derived & const_cast_derived() const
std::ptrdiff_t j
void product(const MatrixType &m)
Definition: product.h:20


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:35:50