11#ifndef EIGEN_FORWARDDECLARATIONS_H
12#define EIGEN_FORWARDDECLARATIONS_H
15#include "../InternalHeaderCheck.h"
28struct traits<const T> : traits<T> {};
30template <
typename Derived>
31struct has_direct_access {
35template <
typename Derived>
36struct accessors_level {
39 has_write_access = (traits<Derived>::Flags &
LvalueBit) ? 1 : 0,
46struct evaluator_traits;
56template <
typename Derived>
58template <
typename Derived>
60template <
typename Derived>
62template <
typename Derived,
int Level>
65template <
typename Scalar_,
int Rows_,
int Cols_,
68 : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION),
69 int MaxRows_ = Rows_,
int MaxCols_ = Cols_>
72template <
typename Derived>
74template <
typename Derived>
77template <
typename ExpressionType,
unsigned int Added,
unsigned int Removed>
79template <
typename ExpressionType,
template <
typename>
class StorageBase>
81template <
typename ExpressionType>
83template <
typename ExpressionType>
84class ForceAlignedAccess;
85template <
typename ExpressionType>
88template <
typename XprType,
int BlockRows = Dynamic,
int BlockCols = Dynamic,
bool InnerPanel = false>
90template <
typename XprType,
typename RowIndices,
typename ColIndices>
92template <
typename XprType,
int Rows = Dynamic,
int Cols = Dynamic,
int Order = 0>
94template <
typename FirstType,
typename SizeType,
typename IncrType>
95class ArithmeticSequence;
97template <
typename MatrixType,
int Size = Dynamic>
99template <
typename MatrixType>
101template <
typename MatrixType>
103template <
typename NullaryOp,
typename MatrixType>
105template <
typename UnaryOp,
typename MatrixType>
107template <
typename BinaryOp,
typename Lhs,
typename Rhs>
109template <
typename TernaryOp,
typename Arg1,
typename Arg2,
typename Arg3>
111template <
typename Decomposition,
typename Rhstype>
113template <
typename XprType>
116template <
typename Lhs,
typename Rhs,
int Option = DefaultProduct>
119template <
typename Derived>
121template <
typename DiagonalVectorType_>
122class DiagonalWrapper;
123template <
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime>
125template <
typename MatrixType,
typename DiagonalType,
int ProductOrder>
126class DiagonalProduct;
127template <
typename MatrixType,
int Index = 0>
129template <
typename Derived>
130class SkewSymmetricBase;
131template <
typename VectorType_>
132class SkewSymmetricWrapper;
133template <
typename Scalar_>
134class SkewSymmetricMatrix3;
135template <
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType =
int>
136class PermutationMatrix;
137template <
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType =
int>
139template <
typename Derived>
140class PermutationBase;
141template <
typename Derived>
142class TranspositionsBase;
143template <
typename IndicesType_>
144class PermutationWrapper;
145template <
typename IndicesType_>
146class TranspositionsWrapper;
148template <
typename Derived,
151template <
int OuterStr
ideAtCompileTime,
int InnerStr
ideAtCompileTime>
153template <
int Value = Dynamic>
155template <
int Value = Dynamic>
157template <
typename MatrixType,
int MapOptions = Unaligned,
typename Str
ideType = Str
ide<0, 0>>
159template <
typename Derived>
161template <
typename PlainObjectType,
int Options = 0,
162 typename StrideType =
163 typename std::conditional_t<PlainObjectType::IsVectorAtCompileTime, InnerStride<1>, OuterStride<>>>
165template <
typename ViewOp,
typename MatrixType,
typename Str
ideType = Str
ide<0, 0>>
168template <
typename Derived>
170template <
typename MatrixType,
unsigned int Mode>
172template <
typename MatrixType,
unsigned int Mode>
173class SelfAdjointView;
174template <
typename Derived>
176template <
typename MatrixType>
178template <
typename ExpressionType>
180template <
typename MatrixType>
181struct CommaInitializer;
182template <
typename Derived>
184template <
typename ExpressionType>
186template <
typename ExpressionType>
188template <
typename Derived>
190template <
typename XprType>
194template <
typename XprType>
195class generic_randaccess_stl_iterator;
196template <
typename XprType>
197class pointer_based_stl_iterator;
198template <
typename XprType, DirectionType Direction>
199class subvector_stl_iterator;
200template <
typename XprType, DirectionType Direction>
201class subvector_stl_reverse_iterator;
202template <
typename DecompositionType>
203struct kernel_retval_base;
204template <
typename DecompositionType>
206template <
typename DecompositionType>
207struct image_retval_base;
208template <
typename DecompositionType>
219template <
typename Lhs,
typename Rhs>
230template <typename T, int ProductTag = internal::product_type<typename T::Lhs, typename T::Rhs>::ret,
231 typename LhsShape =
typename evaluator_traits<typename T::Lhs>::Shape,
232 typename RhsShape =
typename evaluator_traits<typename T::Rhs>::Shape,
233 typename LhsScalar =
typename traits<typename T::Lhs>::Scalar,
234 typename RhsScalar =
typename traits<typename T::Rhs>::Scalar>
235struct product_evaluator;
238template <typename Lhs, typename Rhs, int ProductType = internal::product_type<Lhs, Rhs>::value>
239struct ProductReturnType;
242template <
typename Lhs,
typename Rhs>
243struct LazyProductReturnType;
249template <
typename LhsScalar,
typename RhsScalar,
bool ConjLhs = false,
bool ConjRhs = false>
252template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
254template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
255struct scalar_difference_op;
256template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
257struct scalar_conj_product_op;
258template <
typename LhsScalar,
typename RhsScalar = LhsScalar,
int NaNPropagation = PropagateFast>
260template <
typename LhsScalar,
typename RhsScalar = LhsScalar,
int NaNPropagation = PropagateFast>
262template <
typename Scalar>
263struct scalar_opposite_op;
264template <
typename Scalar>
265struct scalar_conjugate_op;
266template <
typename Scalar>
267struct scalar_real_op;
268template <
typename Scalar>
269struct scalar_imag_op;
270template <
typename Scalar>
272template <
typename Scalar>
273struct scalar_abs2_op;
274template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
275struct scalar_absolute_difference_op;
276template <
typename Scalar>
277struct scalar_sqrt_op;
278template <
typename Scalar>
279struct scalar_cbrt_op;
280template <
typename Scalar>
281struct scalar_rsqrt_op;
282template <
typename Scalar>
284template <
typename Scalar>
286template <
typename Scalar>
288template <
typename Scalar>
290template <
typename Scalar>
291struct scalar_acos_op;
292template <
typename Scalar>
293struct scalar_asin_op;
294template <
typename Scalar>
296template <
typename Scalar>
297struct scalar_atan_op;
298template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
299struct scalar_atan2_op;
300template <
typename Scalar>
301struct scalar_inverse_op;
302template <
typename Scalar>
303struct scalar_square_op;
304template <
typename Scalar>
305struct scalar_cube_op;
306template <
typename Scalar,
typename NewType>
307struct scalar_cast_op;
308template <
typename Scalar>
309struct scalar_random_op;
310template <
typename Scalar>
311struct scalar_constant_op;
312template <
typename Scalar>
313struct scalar_identity_op;
314template <
typename Scalar>
315struct scalar_sign_op;
316template <
typename Scalar,
typename ScalarExponent>
318template <
typename Scalar,
typename ScalarExponent,
bool BaseIsInteger,
bool ExponentIsInteger,
bool BaseIsComplex,
319 bool ExponentIsComplex>
320struct scalar_unary_pow_op;
321template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
322struct scalar_hypot_op;
323template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
324struct scalar_product_op;
325template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
326struct scalar_quotient_op;
328template <
typename Scalar>
329struct scalar_boolean_and_op;
330template <
typename Scalar>
331struct scalar_boolean_or_op;
332template <
typename Scalar>
333struct scalar_boolean_xor_op;
334template <
typename Scalar>
335struct scalar_boolean_not_op;
336template <
typename Scalar>
337struct scalar_bitwise_and_op;
338template <
typename Scalar>
339struct scalar_bitwise_or_op;
340template <
typename Scalar>
341struct scalar_bitwise_xor_op;
342template <
typename Scalar>
343struct scalar_bitwise_not_op;
346template <
typename Scalar>
347struct scalar_lgamma_op;
348template <
typename Scalar>
349struct scalar_digamma_op;
350template <
typename Scalar>
352template <
typename Scalar>
353struct scalar_erfc_op;
354template <
typename Scalar>
355struct scalar_ndtri_op;
356template <
typename Scalar>
357struct scalar_igamma_op;
358template <
typename Scalar>
359struct scalar_igammac_op;
360template <
typename Scalar>
361struct scalar_zeta_op;
362template <
typename Scalar>
363struct scalar_betainc_op;
366template <
typename Scalar>
367struct scalar_bessel_i0_op;
368template <
typename Scalar>
369struct scalar_bessel_i0e_op;
370template <
typename Scalar>
371struct scalar_bessel_i1_op;
372template <
typename Scalar>
373struct scalar_bessel_i1e_op;
374template <
typename Scalar>
375struct scalar_bessel_j0_op;
376template <
typename Scalar>
377struct scalar_bessel_y0_op;
378template <
typename Scalar>
379struct scalar_bessel_j1_op;
380template <
typename Scalar>
381struct scalar_bessel_y1_op;
382template <
typename Scalar>
383struct scalar_bessel_k0_op;
384template <
typename Scalar>
385struct scalar_bessel_k0e_op;
386template <
typename Scalar>
387struct scalar_bessel_k1_op;
388template <
typename Scalar>
389struct scalar_bessel_k1e_op;
396template <
typename Scalar_,
int Rows_,
int Cols_,
399 : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION),
400 int MaxRows_ = Rows_,
int MaxCols_ = Cols_>
402template <
typename MatrixType,
typename BinaryOp,
int Direction>
403class PartialReduxExpr;
404template <
typename ExpressionType,
int Direction>
406template <
typename MatrixType,
int RowFactor,
int ColFactor>
408template <
typename MatrixType,
int Direction = BothDirections>
411#if defined(EIGEN_USE_LAPACKE) && defined(lapack_int)
413typedef lapack_int DefaultPermutationIndex;
415typedef int DefaultPermutationIndex;
418template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
420template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
423template <
typename MatrixType>
426template <
typename MatrixType>
428template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
429class ColPivHouseholderQR;
430template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
431class FullPivHouseholderQR;
432template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
433class CompleteOrthogonalDecomposition;
434template <
typename MatrixType>
436template <
typename MatrixType,
int Options = 0>
438template <
typename MatrixType,
int Options = 0>
440template <
typename MatrixType,
int UpLo = Lower>
442template <
typename MatrixType,
int UpLo = Lower>
444template <
typename VectorsType,
typename CoeffsType,
int S
ide = OnTheLeft>
445class HouseholderSequence;
446template <
typename Scalar>
451template <typename Derived, typename OtherDerived, int Size = MatrixBase<Derived>::SizeAtCompileTime>
454template <
typename Derived,
int Dim_>
456template <
typename Derived>
458template <
typename Scalar>
460template <
typename Scalar>
462template <
typename Scalar,
int Dim>
464template <
typename Scalar,
int Dim>
466template <
typename Scalar,
int Options = AutoAlign>
468template <
typename Scalar,
int Dim,
int Mode,
int Options_ = AutoAlign>
470template <
typename Scalar_,
int AmbientDim_,
int Options = AutoAlign>
471class ParametrizedLine;
472template <
typename Scalar_,
int AmbientDim_,
int Options = AutoAlign>
474template <
typename Scalar>
476template <
typename MatrixType,
int Direction>
480template <
typename Derived>
481class SparseMatrixBase;
484template <
typename Derived>
485struct MatrixExponentialReturnValue;
486template <
typename Derived>
487class MatrixFunctionReturnValue;
488template <
typename Derived>
489class MatrixSquareRootReturnValue;
490template <
typename Derived>
491class MatrixLogarithmReturnValue;
492template <
typename Derived>
493class MatrixPowerReturnValue;
494template <
typename Derived>
495class MatrixComplexPowerReturnValue;
498template <
typename Scalar>
499struct stem_function {
500 typedef internal::make_complex_t<Scalar> ComplexScalar;
501 typedef ComplexScalar type(ComplexScalar,
int);
505template <
typename XprType,
typename Device>
509template <
typename Xpr>
510struct eigen_fill_helper;
511template <typename Xpr, bool use_fill = eigen_fill_helper<Xpr>::value>
512struct eigen_fill_impl;
513template <
typename Xpr>
514struct eigen_memset_helper;
515template <typename Xpr, bool use_memset = eigen_memset_helper<Xpr>::value>
516struct eigen_zero_impl;
518template <
typename Packet>
519struct has_packet_segment : std::false_type {};
@ DirectAccessors
Definition Constants.h:376
@ ReadOnlyAccessors
Definition Constants.h:372
@ WriteAccessors
Definition Constants.h:374
@ DirectWriteAccessors
Definition Constants.h:378
@ ColMajor
Definition Constants.h:318
@ RowMajor
Definition Constants.h:320
@ AutoAlign
Definition Constants.h:322
const unsigned int DirectAccessBit
Definition Constants.h:159
const unsigned int LvalueBit
Definition Constants.h:148
Namespace containing all symbols from the Eigen library.
Definition B01_Experimental.dox:1
const int Dynamic
Definition Constants.h:25