11 #ifndef EIGEN_FORWARDDECLARATIONS_H
12 #define EIGEN_FORWARDDECLARATIONS_H
14 #include "../InternalHeaderCheck.h"
19 template<
typename T>
struct traits;
25 template<
typename T>
struct traits<const
T> : traits<T> {};
27 template<
typename Derived>
struct has_direct_access
32 template<
typename Derived>
struct accessors_level
34 enum { has_direct_access = (traits<Derived>::Flags &
DirectAccessBit) ? 1 : 0,
35 has_write_access = (traits<Derived>::Flags &
LvalueBit) ? 1 : 0,
41 template<
typename T>
struct evaluator_traits;
43 template<
typename T>
struct evaluator;
47 template<
typename T>
struct NumTraits;
49 template<
typename Derived>
struct EigenBase;
50 template<
typename Derived>
class DenseBase;
51 template<
typename Derived>
class PlainObjectBase;
54 template<
typename Scalar_,
int Rows_,
int Cols_,
64 template<
typename Derived>
class ArrayBase;
66 template<
typename ExpressionType,
unsigned int Added,
unsigned int Removed>
class Flagged;
67 template<
typename ExpressionType,
template <
typename>
class StorageBase >
class NoAlias;
68 template<
typename ExpressionType>
class NestByValue;
72 template<
typename XprType,
int BlockRows=Dynamic,
int BlockCols=Dynamic,
bool InnerPanel = false>
class Block;
73 template<
typename XprType,
typename RowIndices,
typename ColIndices>
class IndexedView;
74 template<
typename XprType,
int Rows=Dynamic,
int Cols=Dynamic,
int Order=0>
class Reshaped;
76 template<
typename MatrixType,
int Size=Dynamic>
class VectorBlock;
77 template<
typename MatrixType>
class Transpose;
79 template<
typename NullaryOp,
typename MatrixType>
class CwiseNullaryOp;
80 template<
typename UnaryOp,
typename MatrixType>
class CwiseUnaryOp;
81 template<
typename BinaryOp,
typename Lhs,
typename Rhs>
class CwiseBinaryOp;
82 template<
typename TernaryOp,
typename Arg1,
typename Arg2,
typename Arg3>
class CwiseTernaryOp;
83 template<
typename Decomposition,
typename Rhstype>
class Solve;
84 template<
typename XprType>
class Inverse;
86 template<
typename Lhs,
typename Rhs,
int Option = DefaultProduct>
class Product;
90 template<
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime=SizeAtCompileTime>
class DiagonalMatrix;
91 template<
typename MatrixType,
typename DiagonalType,
int ProductOrder>
class DiagonalProduct;
92 template<
typename MatrixType,
int Index = 0>
class Diagonal;
96 template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType=
int>
class PermutationMatrix;
97 template<
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType=
int>
class Transpositions;
103 template<
typename Derived,
106 template<
int OuterStr
ideAtCompileTime,
int InnerStr
ideAtCompileTime>
class Stride;
109 template<
typename MatrixType,
int MapOptions=Unaligned,
typename Str
ideType = Str
ide<0,0> >
class Map;
110 template<
typename Derived>
class RefBase;
111 template<
typename PlainObjectType,
int Options = 0,
112 typename StrideType =
typename std::conditional_t<PlainObjectType::IsVectorAtCompileTime,InnerStride<1>,
OuterStride<> > >
class Ref;
113 template<
typename ViewOp,
typename MatrixType,
typename Str
ideType = Str
ide<0,0>>
class CwiseUnaryView;
116 template<
typename MatrixType,
unsigned int Mode>
class TriangularView;
117 template<
typename MatrixType,
unsigned int Mode>
class SelfAdjointView;
118 template<
typename MatrixType>
class SparseView;
119 template<
typename ExpressionType>
class WithFormat;
125 template<
typename XprType>
class InnerIterator;
128 template<
typename XprType>
class generic_randaccess_stl_iterator;
129 template<
typename XprType>
class pointer_based_stl_iterator;
130 template<
typename XprType, DirectionType Direction>
class subvector_stl_iterator;
131 template<
typename XprType, DirectionType Direction>
class subvector_stl_reverse_iterator;
132 template<
typename DecompositionType>
struct kernel_retval_base;
133 template<
typename DecompositionType>
struct kernel_retval;
134 template<
typename DecompositionType>
struct image_retval_base;
135 template<
typename DecompositionType>
struct image_retval;
139 template<
typename Scalar_,
int Rows=Dynamic,
int Cols=Dynamic,
int Supers=Dynamic,
int Subs=Dynamic,
int Options=0>
class BandMatrix;
143 template<
typename Lhs,
typename Rhs>
struct product_type;
145 template<
bool>
struct EnableIf;
152 template<
typename T,
153 int ProductTag = internal::product_type<typename T::Lhs,typename T::Rhs>::ret,
154 typename LhsShape =
typename evaluator_traits<typename T::Lhs>::Shape,
155 typename RhsShape =
typename evaluator_traits<typename T::Rhs>::Shape,
156 typename LhsScalar =
typename traits<typename T::Lhs>::Scalar,
157 typename RhsScalar =
typename traits<typename T::Rhs>::Scalar
158 >
struct product_evaluator;
161 template<
typename Lhs,
typename Rhs,
162 int ProductType = internal::product_type<Lhs,Rhs>::value>
172 template<
typename LhsScalar,
typename RhsScalar,
bool ConjLhs=false,
bool ConjRhs=false>
struct conj_helper;
174 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_sum_op;
175 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_difference_op;
176 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_conj_product_op;
177 template<
typename LhsScalar,
typename RhsScalar=LhsScalar,
int NaNPropagation=PropagateFast>
struct scalar_min_op;
178 template<
typename LhsScalar,
typename RhsScalar=LhsScalar,
int NaNPropagation=PropagateFast>
struct scalar_max_op;
179 template<
typename Scalar>
struct scalar_opposite_op;
180 template<
typename Scalar>
struct scalar_conjugate_op;
181 template<
typename Scalar>
struct scalar_real_op;
182 template<
typename Scalar>
struct scalar_imag_op;
183 template<
typename Scalar>
struct scalar_abs_op;
184 template<
typename Scalar>
struct scalar_abs2_op;
185 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_absolute_difference_op;
186 template<
typename Scalar>
struct scalar_sqrt_op;
187 template<
typename Scalar>
struct scalar_rsqrt_op;
188 template<
typename Scalar>
struct scalar_exp_op;
189 template<
typename Scalar>
struct scalar_log_op;
190 template<
typename Scalar>
struct scalar_cos_op;
191 template<
typename Scalar>
struct scalar_sin_op;
192 template<
typename Scalar>
struct scalar_acos_op;
193 template<
typename Scalar>
struct scalar_asin_op;
194 template<
typename Scalar>
struct scalar_tan_op;
195 template<
typename Scalar>
struct scalar_atan_op;
196 template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
struct scalar_atan2_op;
197 template<
typename Scalar>
struct scalar_inverse_op;
198 template<
typename Scalar>
struct scalar_square_op;
199 template<
typename Scalar>
struct scalar_cube_op;
200 template<
typename Scalar,
typename NewType>
struct scalar_cast_op;
201 template<
typename Scalar>
struct scalar_random_op;
202 template<
typename Scalar>
struct scalar_constant_op;
203 template<
typename Scalar>
struct scalar_identity_op;
204 template<
typename Scalar>
struct scalar_sign_op;
205 template <
typename Scalar,
typename ScalarExponent>
206 struct scalar_pow_op;
207 template <
typename Scalar,
typename ScalarExponent,
bool BaseIsInteger,
bool ExponentIsInteger,
bool BaseIsComplex,
208 bool ExponentIsComplex>
209 struct scalar_unary_pow_op;
210 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_hypot_op;
211 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_product_op;
212 template<
typename LhsScalar,
typename RhsScalar=LhsScalar>
struct scalar_quotient_op;
214 template <
typename Scalar>
struct scalar_boolean_and_op;
215 template <
typename Scalar>
struct scalar_boolean_or_op;
216 template <
typename Scalar>
struct scalar_boolean_xor_op;
217 template <
typename Scalar>
struct scalar_boolean_not_op;
218 template <
typename Scalar>
struct scalar_bitwise_and_op;
219 template <
typename Scalar>
struct scalar_bitwise_or_op;
220 template <
typename Scalar>
struct scalar_bitwise_xor_op;
221 template <
typename Scalar>
struct scalar_bitwise_not_op;
224 template<
typename Scalar>
struct scalar_lgamma_op;
225 template<
typename Scalar>
struct scalar_digamma_op;
226 template<
typename Scalar>
struct scalar_erf_op;
227 template<
typename Scalar>
struct scalar_erfc_op;
228 template<
typename Scalar>
struct scalar_ndtri_op;
229 template<
typename Scalar>
struct scalar_igamma_op;
230 template<
typename Scalar>
struct scalar_igammac_op;
231 template<
typename Scalar>
struct scalar_zeta_op;
232 template<
typename Scalar>
struct scalar_betainc_op;
235 template<
typename Scalar>
struct scalar_bessel_i0_op;
236 template<
typename Scalar>
struct scalar_bessel_i0e_op;
237 template<
typename Scalar>
struct scalar_bessel_i1_op;
238 template<
typename Scalar>
struct scalar_bessel_i1e_op;
239 template<
typename Scalar>
struct scalar_bessel_j0_op;
240 template<
typename Scalar>
struct scalar_bessel_y0_op;
241 template<
typename Scalar>
struct scalar_bessel_j1_op;
242 template<
typename Scalar>
struct scalar_bessel_y1_op;
243 template<
typename Scalar>
struct scalar_bessel_k0_op;
244 template<
typename Scalar>
struct scalar_bessel_k0e_op;
245 template<
typename Scalar>
struct scalar_bessel_k1_op;
246 template<
typename Scalar>
struct scalar_bessel_k1e_op;
254 template<
typename Scalar_,
int Rows_,
int Cols_,
259 int MaxRows_ = Rows_,
int MaxCols_ = Cols_>
class Array;
260 template<
typename ConditionMatrixType,
typename ThenMatrixType,
typename ElseMatrixType>
class Select;
261 template<
typename MatrixType,
typename BinaryOp,
int Direction>
class PartialReduxExpr;
262 template<
typename ExpressionType,
int Direction>
class VectorwiseOp;
263 template<
typename MatrixType,
int RowFactor,
int ColFactor>
class Replicate;
264 template<
typename MatrixType,
int Direction = BothDirections>
class Reverse;
266 #if defined(EIGEN_USE_LAPACKE) && defined(lapack_int)
273 template<
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
class FullPivLU;
274 template<
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
class PartialPivLU;
276 template<
typename MatrixType>
struct inverse_impl;
278 template<
typename MatrixType>
class HouseholderQR;
279 template<
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
class ColPivHouseholderQR;
280 template<
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
class FullPivHouseholderQR;
281 template<
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
class CompleteOrthogonalDecomposition;
282 template<
typename MatrixType>
class SVDBase;
283 template<
typename MatrixType,
int Options = 0>
class JacobiSVD;
284 template<
typename MatrixType,
int Options = 0>
class BDCSVD;
285 template<
typename MatrixType,
int UpLo = Lower>
class LLT;
286 template<
typename MatrixType,
int UpLo = Lower>
class LDLT;
287 template<
typename VectorsType,
typename CoeffsType,
int S
ide=OnTheLeft>
class HouseholderSequence;
288 template<
typename Scalar>
class JacobiRotation;
292 template<typename Derived, typename OtherDerived, int Size = MatrixBase<Derived>::SizeAtCompileTime>
struct cross_impl;
294 template<
typename Derived,
int Dim_>
class RotationBase;
295 template<
typename Derived>
class QuaternionBase;
296 template<
typename Scalar>
class Rotation2D;
297 template<
typename Scalar>
class AngleAxis;
298 template<
typename Scalar,
int Dim>
class Translation;
299 template<
typename Scalar,
int Dim>
class AlignedBox;
300 template<
typename Scalar,
int Options = AutoAlign>
class Quaternion;
301 template<
typename Scalar,
int Dim,
int Mode,
int Options_=AutoAlign>
class Transform;
302 template <
typename Scalar_,
int AmbientDim_,
int Options=AutoAlign>
class ParametrizedLine;
303 template <
typename Scalar_,
int AmbientDim_,
int Options=AutoAlign>
class Hyperplane;
304 template<
typename Scalar>
class UniformScaling;
305 template<
typename MatrixType,
int Direction>
class Homogeneous;
308 template<
typename Derived>
class SparseMatrixBase;
319 template <
typename Scalar>
322 typedef std::complex<typename NumTraits<Scalar>::Real> ComplexScalar;
323 typedef ComplexScalar type(ComplexScalar,
int);
#define EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION
Eigen::Triplet< double > T
Base class for all 1D and 2D array, and related expressions.
Expression of a mathematical vector or matrix as an array object.
General-purpose arrays with easy API for coefficient-wise operations.
Expression of a fixed-size or dynamic-size block.
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Generic expression of a matrix where all coefficients are defined by a functor.
Generic expression where a coefficient-wise ternary operator is applied to two expressions.
Generic expression where a coefficient-wise unary operator is applied to an expression.
Generic lvalue expression of a coefficient-wise unary operator of a matrix or a vector.
Base class for diagonal matrices and expressions.
Represents a diagonal matrix with its storage.
Expression of a diagonal matrix.
Expression of a diagonal/subdiagonal/superdiagonal in a matrix.
Enforce aligned packet loads and stores regardless of what is requested.
LU decomposition of a matrix with complete pivoting, and related features.
Expression of a non-sequential sub-matrix defined by arbitrary sequences of row and column indices.
Convenience specialization of Stride to specify only an inner stride See class Map for some examples.
Expression of the inverse of another expression.
A matrix or vector expression mapping an existing array of data.
Base class for all dense matrices, vectors, and expressions.
Expression of an array as a mathematical vector or matrix.
The matrix class, also used for vectors and row-vectors.
Expression which must be nested by value.
Pseudo expression providing an operator = assuming no aliasing.
Convenience specialization of Stride to specify only an outer stride See class Map for some examples.
LU decomposition of a matrix with partial pivoting, and related features.
Generic expression of a partially reduxed matrix.
Base class for permutations.
Class to view a vector of integers as a permutation matrix.
Expression of the product of two arbitrary matrices or vectors.
A matrix or vector expression mapping an existing expression.
Expression of the multiple replication of a matrix or vector.
Expression of a fixed-size or dynamic-size reshape.
Expression of the reverse of a vector or matrix.
Expression of a coefficient wise version of the C++ ternary operator ?:
Expression of a selfadjoint matrix from a triangular part of a dense matrix.
Base class for skew symmetric matrices and expressions.
Represents a 3x3 skew symmetric matrix with its storage.
Expression of a skew symmetric matrix.
Pseudo expression representing a solving operation.
A base class for matrix decomposition and solvers.
Expression of a dense or sparse matrix with zero or too small values removed.
Holds strides information for Map.
Expression of the transpose of a matrix.
Represents a sequence of transpositions (row/column interchange)
Base class for triangular part in a matrix.
Expression of a triangular part in a matrix.
Expression of a fixed-size or dynamic-size sub-vector.
Pseudo expression providing broadcasting and partial reduction operations.
const unsigned int DirectAccessBit
const unsigned int LvalueBit
int DefaultPermutationIndex
Helper class used by the comma initializer operator.