SkylineUtil.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) 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_SKYLINEUTIL_H
11 #define EIGEN_SKYLINEUTIL_H
12 
13 namespace Eigen {
14 
15 #ifdef NDEBUG
16 #define EIGEN_DBG_SKYLINE(X)
17 #else
18 #define EIGEN_DBG_SKYLINE(X) X
19 #endif
20 
21 const unsigned int SkylineBit = 0x1200;
22 template<typename Lhs, typename Rhs, int ProductMode> class SkylineProduct;
24 enum {IsSkyline = SkylineBit};
25 
26 
27 #define EIGEN_SKYLINE_INHERIT_ASSIGNMENT_OPERATOR(Derived, Op) \
28 template<typename OtherDerived> \
29 EIGEN_STRONG_INLINE Derived& operator Op(const Eigen::SkylineMatrixBase<OtherDerived>& other) \
30 { \
31  return Base::operator Op(other.derived()); \
32 } \
33 EIGEN_STRONG_INLINE Derived& operator Op(const Derived& other) \
34 { \
35  return Base::operator Op(other); \
36 }
37 
38 #define EIGEN_SKYLINE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, Op) \
39 template<typename Other> \
40 EIGEN_STRONG_INLINE Derived& operator Op(const Other& scalar) \
41 { \
42  return Base::operator Op(scalar); \
43 }
44 
45 #define EIGEN_SKYLINE_INHERIT_ASSIGNMENT_OPERATORS(Derived) \
46  EIGEN_SKYLINE_INHERIT_ASSIGNMENT_OPERATOR(Derived, =) \
47  EIGEN_SKYLINE_INHERIT_ASSIGNMENT_OPERATOR(Derived, +=) \
48  EIGEN_SKYLINE_INHERIT_ASSIGNMENT_OPERATOR(Derived, -=) \
49  EIGEN_SKYLINE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, *=) \
50  EIGEN_SKYLINE_INHERIT_SCALAR_ASSIGNMENT_OPERATOR(Derived, /=)
51 
52 #define _EIGEN_SKYLINE_GENERIC_PUBLIC_INTERFACE(Derived, BaseClass) \
53  typedef BaseClass Base; \
54  typedef typename Eigen::internal::traits<Derived>::Scalar Scalar; \
55  typedef typename Eigen::NumTraits<Scalar>::Real RealScalar; \
56  typedef typename Eigen::internal::traits<Derived>::StorageKind StorageKind; \
57  typedef typename Eigen::internal::index<StorageKind>::type Index; \
58  enum { Flags = Eigen::internal::traits<Derived>::Flags, };
59 
60 #define EIGEN_SKYLINE_GENERIC_PUBLIC_INTERFACE(Derived) \
61  _EIGEN_SKYLINE_GENERIC_PUBLIC_INTERFACE(Derived, Eigen::SkylineMatrixBase<Derived>)
62 
63 template<typename Derived> class SkylineMatrixBase;
64 template<typename _Scalar, int _Flags = 0> class SkylineMatrix;
65 template<typename _Scalar, int _Flags = 0> class DynamicSkylineMatrix;
66 template<typename _Scalar, int _Flags = 0> class SkylineVector;
67 template<typename _Scalar, int _Flags = 0> class MappedSkylineMatrix;
68 
69 namespace internal {
70 
71 template<typename Lhs, typename Rhs> struct skyline_product_mode;
72 template<typename Lhs, typename Rhs, int ProductMode = skyline_product_mode<Lhs,Rhs>::value> struct SkylineProductReturnType;
73 
74 template<typename T> class eval<T,IsSkyline>
75 {
76  typedef typename traits<T>::Scalar _Scalar;
77  enum {
79  };
80 
81  public:
83 };
84 
85 } // end namespace internal
86 
87 } // end namespace Eigen
88 
89 #endif // EIGEN_SKYLINEUTIL_H
SkylineMatrix< _Scalar, _Flags > type
Definition: SkylineUtil.h:82
Definition: LDLT.h:16
AdditionalProductEvaluationMode
Definition: SkylineUtil.h:23
const unsigned int SkylineBit
Definition: SkylineUtil.h:21
The main skyline matrix class.
Definition: SkylineMatrix.h:51


hebiros
Author(s): Xavier Artache , Matthew Tesch
autogenerated on Thu Sep 3 2020 04:08:50