00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef EIGEN_CONSTANTS_H
00012 #define EIGEN_CONSTANTS_H
00013
00014 namespace Eigen {
00015
00021 const int Dynamic = -1;
00022
00026 const int DynamicIndex = 0xffffff;
00027
00031 const int Infinity = -1;
00032
00053 const unsigned int RowMajorBit = 0x1;
00054
00058 const unsigned int EvalBeforeNestingBit = 0x2;
00059
00063 const unsigned int EvalBeforeAssigningBit = 0x4;
00064
00081 const unsigned int PacketAccessBit = 0x8;
00082
00083 #ifdef EIGEN_VECTORIZE
00084
00092 const unsigned int ActualPacketAccessBit = PacketAccessBit;
00093 #else
00094 const unsigned int ActualPacketAccessBit = 0x0;
00095 #endif
00096
00117 const unsigned int LinearAccessBit = 0x10;
00118
00131 const unsigned int LvalueBit = 0x20;
00132
00142 const unsigned int DirectAccessBit = 0x40;
00143
00147 const unsigned int AlignedBit = 0x80;
00148
00149 const unsigned int NestByRefBit = 0x100;
00150
00151
00152 const unsigned int HereditaryBits = RowMajorBit
00153 | EvalBeforeNestingBit
00154 | EvalBeforeAssigningBit;
00155
00165 enum {
00167 Lower=0x1,
00169 Upper=0x2,
00171 UnitDiag=0x4,
00173 ZeroDiag=0x8,
00175 UnitLower=UnitDiag|Lower,
00177 UnitUpper=UnitDiag|Upper,
00179 StrictlyLower=ZeroDiag|Lower,
00181 StrictlyUpper=ZeroDiag|Upper,
00183 SelfAdjoint=0x10,
00185 Symmetric=0x20
00186 };
00187
00190 enum {
00192 Unaligned=0,
00194 Aligned=1
00195 };
00196
00199
00200
00201 enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
00202
00206 enum DirectionType {
00209 Vertical,
00212 Horizontal,
00215 BothDirections
00216 };
00217
00220 enum {
00222 DefaultTraversal,
00224 LinearTraversal,
00227 InnerVectorizedTraversal,
00230 LinearVectorizedTraversal,
00233 SliceVectorizedTraversal,
00235 InvalidTraversal,
00237 AllAtOnceTraversal
00238 };
00239
00242 enum {
00244 NoUnrolling,
00246 InnerUnrolling,
00249 CompleteUnrolling
00250 };
00251
00254 enum {
00255 Specialized,
00256 BuiltIn
00257 };
00258
00262 enum {
00264 ColMajor = 0,
00266 RowMajor = 0x1,
00268 AutoAlign = 0,
00270 DontAlign = 0x2
00271 };
00272
00275 enum {
00277 OnTheLeft = 1,
00279 OnTheRight = 2
00280 };
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 enum NoChange_t { NoChange };
00295 enum Sequential_t { Sequential };
00296 enum Default_t { Default };
00297
00300 enum {
00301 IsDense = 0,
00302 IsSparse
00303 };
00304
00308 enum AccessorLevels {
00310 ReadOnlyAccessors,
00312 WriteAccessors,
00314 DirectAccessors,
00316 DirectWriteAccessors
00317 };
00318
00321 enum DecompositionOptions {
00323 Pivoting = 0x01,
00325 NoPivoting = 0x02,
00327 ComputeFullU = 0x04,
00329 ComputeThinU = 0x08,
00331 ComputeFullV = 0x10,
00333 ComputeThinV = 0x20,
00336 EigenvaluesOnly = 0x40,
00339 ComputeEigenvectors = 0x80,
00341 EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
00344 Ax_lBx = 0x100,
00347 ABx_lx = 0x200,
00350 BAx_lx = 0x400,
00352 GenEigMask = Ax_lBx | ABx_lx | BAx_lx
00353 };
00354
00357 enum QRPreconditioners {
00359 NoQRPreconditioner,
00361 HouseholderQRPreconditioner,
00363 ColPivHouseholderQRPreconditioner,
00365 FullPivHouseholderQRPreconditioner
00366 };
00367
00368 #ifdef Success
00369 #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
00370 #endif
00371
00374 enum ComputationInfo {
00376 Success = 0,
00378 NumericalIssue = 1,
00380 NoConvergence = 2,
00383 InvalidInput = 3
00384 };
00385
00389 enum TransformTraits {
00391 Isometry = 0x1,
00394 Affine = 0x2,
00396 AffineCompact = 0x10 | Affine,
00398 Projective = 0x20
00399 };
00400
00403 namespace Architecture
00404 {
00405 enum Type {
00406 Generic = 0x0,
00407 SSE = 0x1,
00408 AltiVec = 0x2,
00409 #if defined EIGEN_VECTORIZE_SSE
00410 Target = SSE
00411 #elif defined EIGEN_VECTORIZE_ALTIVEC
00412 Target = AltiVec
00413 #else
00414 Target = Generic
00415 #endif
00416 };
00417 }
00418
00421 enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
00422
00425 enum Action {GetAction, SetAction};
00426
00428 struct Dense {};
00429
00431 struct MatrixXpr {};
00432
00434 struct ArrayXpr {};
00435
00436 namespace internal {
00440 enum ComparisonName {
00441 cmp_EQ = 0,
00442 cmp_LT = 1,
00443 cmp_LE = 2,
00444 cmp_UNORD = 3,
00445 cmp_NEQ = 4
00446 };
00447 }
00448
00449 }
00450
00451 #endif // EIGEN_CONSTANTS_H