00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef EIGEN_FORWARDDECLARATIONS_H
00026 #define EIGEN_FORWARDDECLARATIONS_H
00027
00028 template<typename T> struct ei_traits;
00029 template<typename T> struct NumTraits;
00030
00031 template<typename _Scalar, int _Rows, int _Cols,
00032 int _Options = EIGEN_DEFAULT_MATRIX_STORAGE_ORDER_OPTION | AutoAlign,
00033 int _MaxRows = _Rows, int _MaxCols = _Cols> class Matrix;
00034
00035 template<typename ExpressionType, unsigned int Added, unsigned int Removed> class Flagged;
00036 template<typename ExpressionType> class NestByValue;
00037 template<typename ExpressionType> class SwapWrapper;
00038 template<typename MatrixType> class Minor;
00039 template<typename MatrixType, int BlockRows=Dynamic, int BlockCols=Dynamic, int PacketAccess=AsRequested,
00040 int _DirectAccessStatus = ei_traits<MatrixType>::Flags&DirectAccessBit ? DirectAccessBit
00041 : ei_traits<MatrixType>::Flags&SparseBit> class Block;
00042 template<typename MatrixType> class Transpose;
00043 template<typename MatrixType> class Conjugate;
00044 template<typename NullaryOp, typename MatrixType> class CwiseNullaryOp;
00045 template<typename UnaryOp, typename MatrixType> class CwiseUnaryOp;
00046 template<typename BinaryOp, typename Lhs, typename Rhs> class CwiseBinaryOp;
00047 template<typename Lhs, typename Rhs, int ProductMode> class Product;
00048 template<typename CoeffsVectorType> class DiagonalMatrix;
00049 template<typename MatrixType> class DiagonalCoeffs;
00050 template<typename MatrixType, int PacketAccess = AsRequested> class Map;
00051 template<typename MatrixType, unsigned int Mode> class Part;
00052 template<typename MatrixType, unsigned int Mode> class Extract;
00053 template<typename ExpressionType> class Cwise;
00054 template<typename ExpressionType> class WithFormat;
00055 template<typename MatrixType> struct CommaInitializer;
00056
00057
00058 template<typename Lhs, typename Rhs> struct ei_product_mode;
00059 template<typename Lhs, typename Rhs, int ProductMode = ei_product_mode<Lhs,Rhs>::value> struct ProductReturnType;
00060
00061 template<typename Scalar> struct ei_scalar_sum_op;
00062 template<typename Scalar> struct ei_scalar_difference_op;
00063 template<typename Scalar> struct ei_scalar_product_op;
00064 template<typename Scalar> struct ei_scalar_quotient_op;
00065 template<typename Scalar> struct ei_scalar_opposite_op;
00066 template<typename Scalar> struct ei_scalar_conjugate_op;
00067 template<typename Scalar> struct ei_scalar_real_op;
00068 template<typename Scalar> struct ei_scalar_imag_op;
00069 template<typename Scalar> struct ei_scalar_abs_op;
00070 template<typename Scalar> struct ei_scalar_abs2_op;
00071 template<typename Scalar> struct ei_scalar_sqrt_op;
00072 template<typename Scalar> struct ei_scalar_exp_op;
00073 template<typename Scalar> struct ei_scalar_log_op;
00074 template<typename Scalar> struct ei_scalar_cos_op;
00075 template<typename Scalar> struct ei_scalar_sin_op;
00076 template<typename Scalar> struct ei_scalar_pow_op;
00077 template<typename Scalar> struct ei_scalar_inverse_op;
00078 template<typename Scalar> struct ei_scalar_square_op;
00079 template<typename Scalar> struct ei_scalar_cube_op;
00080 template<typename Scalar, typename NewType> struct ei_scalar_cast_op;
00081 template<typename Scalar> struct ei_scalar_multiple_op;
00082 template<typename Scalar> struct ei_scalar_quotient1_op;
00083 template<typename Scalar> struct ei_scalar_min_op;
00084 template<typename Scalar> struct ei_scalar_max_op;
00085 template<typename Scalar> struct ei_scalar_random_op;
00086 template<typename Scalar> struct ei_scalar_add_op;
00087 template<typename Scalar> struct ei_scalar_constant_op;
00088 template<typename Scalar> struct ei_scalar_identity_op;
00089
00090 struct IOFormat;
00091
00092 template<typename Scalar>
00093 void ei_cache_friendly_product(
00094 int _rows, int _cols, int depth,
00095 bool _lhsRowMajor, const Scalar* _lhs, int _lhsStride,
00096 bool _rhsRowMajor, const Scalar* _rhs, int _rhsStride,
00097 bool resRowMajor, Scalar* res, int resStride);
00098
00099
00100 template<typename ConditionMatrixType, typename ThenMatrixType, typename ElseMatrixType> class Select;
00101 template<typename MatrixType, typename BinaryOp, int Direction> class PartialReduxExpr;
00102 template<typename ExpressionType, int Direction> class PartialRedux;
00103
00104 template<typename MatrixType> class LU;
00105 template<typename MatrixType> class QR;
00106 template<typename MatrixType> class SVD;
00107 template<typename MatrixType> class LLT;
00108 template<typename MatrixType> class LDLT;
00109
00110
00111 template<typename Derived, int _Dim> class RotationBase;
00112 template<typename Lhs, typename Rhs> class Cross;
00113 template<typename Scalar> class Quaternion;
00114 template<typename Scalar> class Rotation2D;
00115 template<typename Scalar> class AngleAxis;
00116 template<typename Scalar,int Dim> class Transform;
00117 template <typename _Scalar, int _AmbientDim> class ParametrizedLine;
00118 template <typename _Scalar, int _AmbientDim> class Hyperplane;
00119 template<typename Scalar,int Dim> class Translation;
00120 template<typename Scalar,int Dim> class Scaling;
00121
00122
00123 template<typename Lhs, typename Rhs, int ProductMode> class SparseProduct;
00124
00125 #endif // EIGEN_FORWARDDECLARATIONS_H