12#ifndef EIGEN_FORWARDDECLARATIONS_H
13#define EIGEN_FORWARDDECLARATIONS_H
16#include "../InternalHeaderCheck.h"
29struct traits<const T> : traits<T> {};
31template <
typename Derived>
32struct has_direct_access : bool_constant<(traits<Derived>::Flags & DirectAccessBit) != 0> {};
34template <
typename Derived>
35struct accessors_level {
38 has_write_access = (traits<Derived>::Flags &
LvalueBit) ? 1 : 0,
45struct evaluator_traits;
55template <
typename Derived>
57template <
typename Derived>
59template <
typename Derived>
61template <
typename Derived,
int Level>
64template <
typename Scalar_,
int Rows_,
int Cols_,
67 : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION),
68 int MaxRows_ = Rows_,
int MaxCols_ = Cols_>
71template <
typename Derived>
73template <
typename Derived>
76template <
typename ExpressionType,
template <
typename>
class StorageBase>
78template <
typename ExpressionType>
80template <
typename ExpressionType>
83template <
typename XprType,
int BlockRows = Dynamic,
int BlockCols = Dynamic,
bool InnerPanel = false>
85template <
typename XprType,
typename RowIndices,
typename ColIndices>
87template <
typename XprType,
int Rows = Dynamic,
int Cols = Dynamic,
int Order = 0>
89template <
typename FirstType,
typename SizeType,
typename IncrType>
90class ArithmeticSequence;
92template <
typename MatrixType,
int Size = Dynamic>
94template <
typename MatrixType>
96template <
typename MatrixType>
98template <
typename NullaryOp,
typename MatrixType>
100template <
typename UnaryOp,
typename MatrixType>
102template <
typename BinaryOp,
typename Lhs,
typename Rhs>
104template <
typename TernaryOp,
typename Arg1,
typename Arg2,
typename Arg3>
106template <
typename Decomposition,
typename Rhstype>
108template <
typename XprType>
111template <
typename Lhs,
typename Rhs,
int Option = DefaultProduct>
114template <
typename Derived>
116template <
typename DiagonalVectorType_>
117class DiagonalWrapper;
118template <
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime>
120template <
typename MatrixType,
int Index = 0>
122template <
typename Derived>
123class SkewSymmetricBase;
124template <
typename VectorType_>
125class SkewSymmetricWrapper;
126template <
typename Scalar_>
127class SkewSymmetricMatrix3;
128template <
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType =
int>
129class PermutationMatrix;
130template <
typename Scalar_,
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
131 typename StorageIndex_ =
int>
132class ScaledPermutationMatrix;
133template <
typename Derived>
134class ScaledPermutationBase;
135template <
int SizeAtCompileTime,
int MaxSizeAtCompileTime = SizeAtCompileTime,
typename IndexType =
int>
137template <
typename Derived>
138class PermutationBase;
139template <
typename Derived>
140class TranspositionsBase;
141template <
typename IndicesType_>
142class PermutationWrapper;
143template <
typename IndicesType_>
144class TranspositionsWrapper;
146template <
typename Derived,
149template <
int OuterStr
ideAtCompileTime,
int InnerStr
ideAtCompileTime>
151template <
int Value = Dynamic>
153template <
int Value = Dynamic>
155template <
typename MatrixType,
int MapOptions = Unaligned,
typename Str
ideType = Str
ide<0, 0>>
157template <
typename Derived>
159template <
typename PlainObjectType,
int Options = 0,
160 typename StrideType =
161 std::conditional_t<PlainObjectType::IsVectorAtCompileTime, InnerStride<1>, OuterStride<>>>
163template <
typename ViewOp,
typename MatrixType,
typename Str
ideType = Str
ide<0, 0>>
166template <
typename Derived>
168template <
typename MatrixType,
unsigned int Mode>
170template <
typename MatrixType,
unsigned int Mode>
171class SelfAdjointView;
172template <
typename Derived>
174template <
typename MatrixType>
176template <
typename ExpressionType>
178template <
typename MatrixType>
179struct CommaInitializer;
180template <
typename Derived>
182template <
typename ExpressionType>
184template <
typename ExpressionType>
186template <
typename Derived>
188template <
typename XprType>
192template <
typename XprType>
193class generic_randaccess_stl_iterator;
194template <
typename XprType>
195class pointer_based_stl_iterator;
196template <
typename XprType, DirectionType Direction>
197class subvector_stl_iterator;
198template <
typename XprType, DirectionType Direction>
199class subvector_stl_reverse_iterator;
203template <
typename Scalar_,
int Rows = Dynamic,
int Cols = Dynamic,
int Supers = Dynamic,
int Subs = Dynamic,
209template <
typename Lhs,
typename Rhs>
217template <typename T, int ProductTag = internal::product_type<typename T::Lhs, typename T::Rhs>::value,
218 typename LhsShape =
typename evaluator_traits<typename T::Lhs>::Shape,
219 typename RhsShape =
typename evaluator_traits<typename T::Rhs>::Shape,
220 typename LhsScalar =
typename traits<typename T::Lhs>::Scalar,
221 typename RhsScalar =
typename traits<typename T::Rhs>::Scalar>
222struct product_evaluator;
229template <
typename LhsScalar,
typename RhsScalar,
bool ConjLhs = false,
bool ConjRhs = false>
232template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
234template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
235struct scalar_difference_op;
236template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
237struct scalar_conj_product_op;
238template <
typename LhsScalar,
typename RhsScalar = LhsScalar,
int NaNPropagation = PropagateFast>
240template <
typename LhsScalar,
typename RhsScalar = LhsScalar,
int NaNPropagation = PropagateFast>
242template <
typename Scalar>
243struct scalar_opposite_op;
244template <
typename Scalar>
245struct scalar_conjugate_op;
246template <
typename Scalar>
247struct scalar_real_op;
248template <
typename Scalar>
249struct scalar_imag_op;
250template <
typename Scalar>
252template <
typename Scalar>
253struct scalar_abs2_op;
254template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
255struct scalar_absolute_difference_op;
256template <
typename Scalar>
257struct scalar_sqrt_op;
258template <
typename Scalar>
259struct scalar_cbrt_op;
260template <
typename Scalar>
261struct scalar_rsqrt_op;
262template <
typename Scalar>
264template <
typename Scalar>
266template <
typename Scalar>
268template <
typename Scalar>
270template <
typename Scalar>
271struct scalar_acos_op;
272template <
typename Scalar>
273struct scalar_asin_op;
274template <
typename Scalar>
276template <
typename Scalar>
277struct scalar_atan_op;
278template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
279struct scalar_atan2_op;
280template <
typename Scalar>
281struct scalar_inverse_op;
282template <
typename Scalar>
283struct scalar_square_op;
284template <
typename Scalar>
285struct scalar_cube_op;
286template <
typename Scalar,
typename NewType>
287struct scalar_cast_op;
288template <
typename Scalar>
289struct scalar_random_op;
290template <
typename Scalar>
291struct scalar_constant_op;
292template <
typename Scalar>
293struct scalar_identity_op;
294template <
typename Scalar>
295struct scalar_sign_op;
296template <
typename Scalar,
typename ScalarExponent>
298template <
typename Scalar,
typename ScalarExponent,
bool BaseIsInteger,
bool ExponentIsInteger,
bool BaseIsComplex,
299 bool ExponentIsComplex>
300struct scalar_unary_pow_op;
301template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
302struct scalar_hypot_op;
303template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
304struct scalar_product_op;
305template <
typename LhsScalar,
typename RhsScalar = LhsScalar>
306struct scalar_quotient_op;
308template <
typename Scalar>
309struct scalar_boolean_and_op;
310template <
typename Scalar>
311struct scalar_boolean_or_op;
312template <
typename Scalar>
313struct scalar_boolean_xor_op;
314template <
typename Scalar>
315struct scalar_boolean_not_op;
316template <
typename Scalar>
317struct scalar_bitwise_and_op;
318template <
typename Scalar>
319struct scalar_bitwise_or_op;
320template <
typename Scalar>
321struct scalar_bitwise_xor_op;
322template <
typename Scalar>
323struct scalar_bitwise_not_op;
326template <
typename Scalar>
327struct scalar_lgamma_op;
328template <
typename Scalar>
329struct scalar_digamma_op;
330template <
typename Scalar>
332template <
typename Scalar>
333struct scalar_erfc_op;
334template <
typename Scalar>
335struct scalar_ndtri_op;
336template <
typename Scalar>
337struct scalar_igamma_op;
338template <
typename Scalar>
339struct scalar_igammac_op;
340template <
typename Scalar>
341struct scalar_zeta_op;
342template <
typename Scalar>
343struct scalar_betainc_op;
346template <
typename Scalar>
347struct scalar_bessel_i0_op;
348template <
typename Scalar>
349struct scalar_bessel_i0e_op;
350template <
typename Scalar>
351struct scalar_bessel_i1_op;
352template <
typename Scalar>
353struct scalar_bessel_i1e_op;
354template <
typename Scalar>
355struct scalar_bessel_j0_op;
356template <
typename Scalar>
357struct scalar_bessel_y0_op;
358template <
typename Scalar>
359struct scalar_bessel_j1_op;
360template <
typename Scalar>
361struct scalar_bessel_y1_op;
362template <
typename Scalar>
363struct scalar_bessel_k0_op;
364template <
typename Scalar>
365struct scalar_bessel_k0e_op;
366template <
typename Scalar>
367struct scalar_bessel_k1_op;
368template <
typename Scalar>
369struct scalar_bessel_k1e_op;
376template <
typename Scalar_,
int Rows_,
int Cols_,
379 : EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION),
380 int MaxRows_ = Rows_,
int MaxCols_ = Cols_>
382template <
typename MatrixType,
typename BinaryOp,
int Direction>
383class PartialReduxExpr;
384template <
typename ExpressionType,
int Direction>
386template <
typename MatrixType,
int RowFactor,
int ColFactor>
388template <
int Direction,
typename LhsType,
typename RhsType>
390template <
typename MatrixType,
int Direction = BothDirections>
398#ifndef EIGEN_HAS_LAPACK_INT
399#if defined(lapack_int) || defined(LAPACK_INT)
400#define EIGEN_HAS_LAPACK_INT 1
402#define EIGEN_HAS_LAPACK_INT 0
406#if defined(EIGEN_USE_LAPACKE) && EIGEN_HAS_LAPACK_INT
408using DefaultPermutationIndex = lapack_int;
410using DefaultPermutationIndex = int;
414#if defined(EIGEN_USE_LAPACKE) && defined(EIGEN_USE_BLAS) && EIGEN_HAS_LAPACK_INT
415static_assert(
sizeof(lapack_int) ==
sizeof(BlasIndex),
416 "LAPACKE integer width (lapack_int) does not match the BLAS integer width (Eigen::BlasIndex). Build "
417 "both backends against the same integer interface: pair EIGEN_64BIT_BLAS with an ILP64 LAPACKE "
418 "(lapack_int = 64-bit), or use the 32-bit interface for both.");
421template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
423template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
425template <
typename MatrixType>
427template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
428class ColPivHouseholderQR;
429template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
430class FullPivHouseholderQR;
431template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
432class RandColPivHouseholderQR;
433template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
434class CompleteOrthogonalDecomposition;
435template <
typename MatrixType,
typename PermutationIndex = DefaultPermutationIndex>
436class RandCompleteOrthogonalDecomposition;
438template <
typename MatrixType,
typename PermutationIndex,
template <
typename,
typename>
class RankRevealingQR>
439class CompleteOrthogonalDecompositionImpl;
441template <
typename MatrixType>
443template <
typename MatrixType,
int Options = 0>
445template <
typename MatrixType,
int Options = 0>
447template <
typename MatrixType,
int UpLo = Lower>
449template <
typename MatrixType,
int UpLo = Lower>
451template <
typename MatrixType,
int UpLo = Lower>
453template <
typename VectorsType,
typename CoeffsType,
int S
ide = OnTheLeft>
454class HouseholderSequence;
455template <
typename Scalar>
460template <typename Derived, typename OtherDerived, int Size = MatrixBase<Derived>::SizeAtCompileTime>
463template <
typename Derived,
int Dim_>
465template <
typename Derived>
467template <
typename Scalar>
469template <
typename Scalar>
471template <
typename Scalar,
int Dim>
473template <
typename Scalar,
int Dim>
475template <
typename Scalar,
int Options = AutoAlign>
477template <
typename Scalar,
int Dim,
int Mode,
int Options_ = AutoAlign>
479template <
typename Scalar_,
int AmbientDim_,
int Options = AutoAlign>
480class ParametrizedLine;
481template <
typename Scalar_,
int AmbientDim_,
int Options = AutoAlign>
483template <
typename Scalar>
485template <
typename MatrixType,
int Direction>
489template <
typename Derived>
490class SparseMatrixBase;
493template <
typename Derived>
494struct MatrixExponentialReturnValue;
495template <
typename Derived>
496class MatrixFunctionReturnValue;
497template <
typename Derived>
498class MatrixSquareRootReturnValue;
499template <
typename Derived>
500class MatrixLogarithmReturnValue;
501template <
typename Derived>
502class MatrixPowerReturnValue;
503template <
typename Derived>
504class MatrixComplexPowerReturnValue;
507template <
typename Scalar>
508struct stem_function {
509 using ComplexScalar = internal::make_complex_t<Scalar>;
510 using type = ComplexScalar(ComplexScalar,
int);
514template <
typename XprType,
typename Device>
518template <
typename Xpr>
519struct eigen_fill_helper;
520template <typename Xpr, bool use_fill = eigen_fill_helper<Xpr>::value>
521struct eigen_fill_impl;
522template <
typename Xpr>
523struct eigen_memset_helper;
524template <typename Xpr, bool use_memset = eigen_memset_helper<Xpr>::value>
525struct eigen_zero_impl;
527template <
typename Packet>
528struct has_packet_segment : std::false_type {};
531struct complex_array_access;
@ DirectAccessors
Definition Constants.h:381
@ ReadOnlyAccessors
Definition Constants.h:377
@ WriteAccessors
Definition Constants.h:379
@ DirectWriteAccessors
Definition Constants.h:383
@ ColMajor
Definition Constants.h:319
@ RowMajor
Definition Constants.h:321
@ AutoAlign
Definition Constants.h:323
constexpr unsigned int DirectAccessBit
Definition Constants.h:160
constexpr unsigned int LvalueBit
Definition Constants.h:149