Eigen  3.3.0
 
Loading...
Searching...
No Matches
SolverBase.h
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2015 Gael Guennebaud <gael.guennebaud@inria.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_SOLVERBASE_H
11#define EIGEN_SOLVERBASE_H
12
13namespace Eigen {
14
15namespace internal {
16
17
18
19} // end namespace internal
20
40template<typename Derived>
41class SolverBase : public EigenBase<Derived>
42{
43 public:
44
46 typedef typename internal::traits<Derived>::Scalar Scalar;
47 typedef Scalar CoeffReturnType;
48
49 enum {
50 RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
51 ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
52 SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
53 internal::traits<Derived>::ColsAtCompileTime>::ret),
54 MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
55 MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
56 MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
57 internal::traits<Derived>::MaxColsAtCompileTime>::ret),
58 IsVectorAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime == 1
59 || internal::traits<Derived>::MaxColsAtCompileTime == 1
60 };
61
64 {}
65
67 {}
68
69 using Base::derived;
70
73 template<typename Rhs>
74 inline const Solve<Derived, Rhs>
75 solve(const MatrixBase<Rhs>& b) const
76 {
77 eigen_assert(derived().rows()==b.rows() && "solve(): invalid number of rows of the right hand side matrix b");
78 return Solve<Derived, Rhs>(derived(), b.derived());
79 }
80
82 typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
91 {
93 }
94
96 typedef typename internal::conditional<NumTraits<Scalar>::IsComplex,
98 ConstTransposeReturnType
99 >::type AdjointReturnType;
109 inline AdjointReturnType adjoint() const
110 {
111 return AdjointReturnType(derived().transpose());
112 }
113
114 protected:
115};
116
117namespace internal {
118
119template<typename Derived>
120struct generic_xpr_base<Derived, MatrixXpr, SolverStorage>
121{
122 typedef SolverBase<Derived> type;
123
124};
125
126} // end namespace internal
127
128} // end namespace Eigen
129
130#endif // EIGEN_SOLVERBASE_H
Generic expression where a coefficient-wise unary operator is applied to an expression.
Definition: CwiseUnaryOp.h:56
Derived & derived()
Definition: EigenBase.h:44
Index rows() const
Definition: EigenBase.h:58
Expression of a diagonal/subdiagonal/superdiagonal in a matrix.
Definition: Diagonal.h:65
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:50
Pseudo expression representing a solving operation.
Definition: Solve.h:63
A base class for matrix decomposition and solvers.
Definition: SolverBase.h:42
AdjointReturnType adjoint() const
Definition: SolverBase.h:109
SolverBase()
Definition: SolverBase.h:63
ConstTransposeReturnType transpose() const
Definition: SolverBase.h:90
Derived & derived()
Definition: EigenBase.h:44
const Solve< Derived, Rhs > solve(const MatrixBase< Rhs > &b) const
Definition: SolverBase.h:75
Namespace containing all symbols from the Eigen library.
Definition: Core:287
Definition: EigenBase.h:29
Derived & derived()
Definition: EigenBase.h:44
Index rows() const
Definition: EigenBase.h:58