TR-mbed 1.0
Loading...
Searching...
No Matches
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
15namespace Eigen {
16
26template<typename Derived> class SkylineMatrixBase : public EigenBase<Derived> {
27public:
28
31 typedef typename internal::index<StorageKind>::type Index;
32
33 enum {
55
58
75 IsRowMajor = Flags & RowMajorBit ? 1 : 0
76 };
77
78#ifndef EIGEN_PARSED_BY_DOXYGEN
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
106 return derived().rows();
107 }
108
111 return derived().cols();
112 }
113
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>
168 inline Derived & operator=(const SkylineMatrixBase<OtherDerived>& other) {
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>
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
196
205
206protected:
208};
209
210} // end namespace Eigen
211
212#endif // EIGEN_SKYLINEMATRIXBASE_H
Matrix3f m
Definition AngleAxis_mimic_euler.cpp:1
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_NOEXCEPT
Definition Macros.h:1418
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_SIZE_MAX(a, b)
Definition Macros.h:1310
#define EIGEN_STRONG_INLINE
Definition Macros.h:917
m col(1)
m row(1)
EIGEN_DEVICE_FUNC Derived & setZero()
Definition CwiseNullaryOp.h:546
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
The matrix class, also used for vectors and row-vectors.
Definition Matrix.h:180
Base class of any skyline matrices or skyline expressions.
Definition SkylineMatrixBase.h:26
const SkylineProductReturnType< Derived, OtherDerived >::Type operator*(const MatrixBase< OtherDerived > &other) const
Derived & const_cast_derived() const
Definition SkylineMatrixBase.h:99
NumTraits< Scalar >::Real RealScalar
Definition SkylineMatrixBase.h:85
Matrix< Scalar, EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime), EIGEN_SIZE_MAX(RowsAtCompileTime, ColsAtCompileTime) > SquareMatrixType
Definition SkylineMatrixBase.h:89
Derived & operator=(const Derived &other)
Definition SkylineMatrixBase.h:151
const Derived & derived() const
Definition SkylineMatrixBase.h:91
EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition SkylineMatrixBase.h:116
internal::index< StorageKind >::type Index
Definition SkylineMatrixBase.h:31
internal::traits< Derived >::StorageKind StorageKind
Definition SkylineMatrixBase.h:30
Derived & markAsRValue()
Definition SkylineMatrixBase.h:142
Index outerSize() const
Definition SkylineMatrixBase.h:128
Derived & derived()
Definition SkylineMatrixBase.h:95
internal::traits< Derived >::Scalar Scalar
Definition SkylineMatrixBase.h:29
@ MaxRowsAtCompileTime
Definition SkylineMatrixBase.h:53
@ SizeAtCompileTime
Definition SkylineMatrixBase.h:47
@ ColsAtCompileTime
Definition SkylineMatrixBase.h:40
@ CoeffReadCost
Definition SkylineMatrixBase.h:70
@ RowsAtCompileTime
Definition SkylineMatrixBase.h:34
@ Flags
Definition SkylineMatrixBase.h:65
@ MaxSizeAtCompileTime
Definition SkylineMatrixBase.h:56
@ MaxColsAtCompileTime
Definition SkylineMatrixBase.h:54
@ IsRowMajor
Definition SkylineMatrixBase.h:75
@ IsVectorAtCompileTime
Definition SkylineMatrixBase.h:59
Derived & operator=(const SkylineMatrixBase< OtherDerived > &other)
Definition SkylineMatrixBase.h:168
Index innerSize() const
Definition SkylineMatrixBase.h:134
void evalTo(MatrixBase< DenseDerived > &dst) const
Definition SkylineMatrixBase.h:186
void assignGeneric(const OtherDerived &other)
Definition SkylineMatrixBase.h:157
Index nonZeros() const
Definition SkylineMatrixBase.h:122
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition SkylineMatrixBase.h:105
bool m_isRValue
Definition SkylineMatrixBase.h:207
Derived & operator=(const SkylineProduct< Lhs, Rhs, SkylineTimeSkylineProduct > &product)
EIGEN_STRONG_INLINE const internal::eval< Derived, IsSkyline >::type eval() const
Definition SkylineMatrixBase.h:202
Matrix< Scalar, RowsAtCompileTime, ColsAtCompileTime > toDense() const
Definition SkylineMatrixBase.h:193
bool isRValue() const
Definition SkylineMatrixBase.h:138
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition SkylineMatrixBase.h:110
friend std::ostream & operator<<(std::ostream &s, const SkylineMatrixBase &m)
Definition SkylineMatrixBase.h:175
SkylineMatrixBase()
Definition SkylineMatrixBase.h:147
Definition SkylineUtil.h:22
const unsigned int RowMajorBit
Definition Constants.h:66
RealScalar s
Definition level1_cplx_impl.h:126
DenseIndex ret
Definition level1_cplx_impl.h:44
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
void product(const MatrixType &m)
Definition product.h:20
Definition EigenBase.h:30
Definition XprHelper.h:332
Definition XprHelper.h:282
Definition ForwardDeclarations.h:17
std::ptrdiff_t j
Definition tut_arithmetic_redux_minmax.cpp:2