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 Infinity = -1;
00027
00048 const unsigned int RowMajorBit = 0x1;
00049
00053 const unsigned int EvalBeforeNestingBit = 0x2;
00054
00058 const unsigned int EvalBeforeAssigningBit = 0x4;
00059
00076 const unsigned int PacketAccessBit = 0x8;
00077
00078 #ifdef EIGEN_VECTORIZE
00079
00087 const unsigned int ActualPacketAccessBit = PacketAccessBit;
00088 #else
00089 const unsigned int ActualPacketAccessBit = 0x0;
00090 #endif
00091
00112 const unsigned int LinearAccessBit = 0x10;
00113
00126 const unsigned int LvalueBit = 0x20;
00127
00137 const unsigned int DirectAccessBit = 0x40;
00138
00142 const unsigned int AlignedBit = 0x80;
00143
00144 const unsigned int NestByRefBit = 0x100;
00145
00146
00147 const unsigned int HereditaryBits = RowMajorBit
00148 | EvalBeforeNestingBit
00149 | EvalBeforeAssigningBit;
00150
00160 enum {
00162 Lower=0x1,
00164 Upper=0x2,
00166 UnitDiag=0x4,
00168 ZeroDiag=0x8,
00170 UnitLower=UnitDiag|Lower,
00172 UnitUpper=UnitDiag|Upper,
00174 StrictlyLower=ZeroDiag|Lower,
00176 StrictlyUpper=ZeroDiag|Upper,
00178 SelfAdjoint=0x10,
00180 Symmetric=0x20
00181 };
00182
00185 enum {
00187 Unaligned=0,
00189 Aligned=1
00190 };
00191
00194
00195
00196 enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
00197
00201 enum DirectionType {
00204 Vertical,
00207 Horizontal,
00210 BothDirections
00211 };
00212
00215 enum {
00217 DefaultTraversal,
00219 LinearTraversal,
00222 InnerVectorizedTraversal,
00225 LinearVectorizedTraversal,
00228 SliceVectorizedTraversal,
00230 InvalidTraversal
00231 };
00232
00235 enum {
00237 NoUnrolling,
00239 InnerUnrolling,
00242 CompleteUnrolling
00243 };
00244
00247 enum {
00248 Specialized,
00249 BuiltIn
00250 };
00251
00255 enum {
00257 ColMajor = 0,
00259 RowMajor = 0x1,
00261 AutoAlign = 0,
00263 DontAlign = 0x2
00264 };
00265
00268 enum {
00270 OnTheLeft = 1,
00272 OnTheRight = 2
00273 };
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287 enum NoChange_t { NoChange };
00288 enum Sequential_t { Sequential };
00289 enum Default_t { Default };
00290
00293 enum {
00294 IsDense = 0,
00295 IsSparse
00296 };
00297
00301 enum AccessorLevels {
00303 ReadOnlyAccessors,
00305 WriteAccessors,
00307 DirectAccessors,
00309 DirectWriteAccessors
00310 };
00311
00314 enum DecompositionOptions {
00316 Pivoting = 0x01,
00318 NoPivoting = 0x02,
00320 ComputeFullU = 0x04,
00322 ComputeThinU = 0x08,
00324 ComputeFullV = 0x10,
00326 ComputeThinV = 0x20,
00329 EigenvaluesOnly = 0x40,
00332 ComputeEigenvectors = 0x80,
00334 EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
00337 Ax_lBx = 0x100,
00340 ABx_lx = 0x200,
00343 BAx_lx = 0x400,
00345 GenEigMask = Ax_lBx | ABx_lx | BAx_lx
00346 };
00347
00350 enum QRPreconditioners {
00352 NoQRPreconditioner,
00354 HouseholderQRPreconditioner,
00356 ColPivHouseholderQRPreconditioner,
00358 FullPivHouseholderQRPreconditioner
00359 };
00360
00361 #ifdef Success
00362 #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
00363 #endif
00364
00367 enum ComputationInfo {
00369 Success = 0,
00371 NumericalIssue = 1,
00373 NoConvergence = 2,
00376 InvalidInput = 3
00377 };
00378
00382 enum TransformTraits {
00384 Isometry = 0x1,
00387 Affine = 0x2,
00389 AffineCompact = 0x10 | Affine,
00391 Projective = 0x20
00392 };
00393
00396 namespace Architecture
00397 {
00398 enum Type {
00399 Generic = 0x0,
00400 SSE = 0x1,
00401 AltiVec = 0x2,
00402 #if defined EIGEN_VECTORIZE_SSE
00403 Target = SSE
00404 #elif defined EIGEN_VECTORIZE_ALTIVEC
00405 Target = AltiVec
00406 #else
00407 Target = Generic
00408 #endif
00409 };
00410 }
00411
00414 enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
00415
00418 enum Action {GetAction, SetAction};
00419
00421 struct Dense {};
00422
00424 struct MatrixXpr {};
00425
00427 struct ArrayXpr {};
00428
00429 }
00430
00431 #endif // EIGEN_CONSTANTS_H