Constants.h
Go to the documentation of this file.
00001 // This file is part of Eigen, a lightweight C++ template library
00002 // for linear algebra.
00003 //
00004 // Copyright (C) 2008-2009 Gael Guennebaud <gael.guennebaud@inria.fr>
00005 // Copyright (C) 2007-2009 Benoit Jacob <jacob.benoit.1@gmail.com>
00006 //
00007 // This Source Code Form is subject to the terms of the Mozilla
00008 // Public License v. 2.0. If a copy of the MPL was not distributed
00009 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
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 // list of flags that are inherited by default
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 // FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
00200 // TODO: find out what to do with that. Adapt the AlignedBox API ?
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,  // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
00268   AutoAlign = 0, // FIXME --- clarify the situation
00270   DontAlign = 0x2
00271 };
00272 
00275 enum {
00277   OnTheLeft = 1,  
00279   OnTheRight = 2  
00280 };
00281 
00282 /* the following used to be written as:
00283  *
00284  *   struct NoChange_t {};
00285  *   namespace {
00286  *     EIGEN_UNUSED NoChange_t NoChange;
00287  *   }
00288  *
00289  * on the ground that it feels dangerous to disambiguate overloaded functions on enum/integer types.  
00290  * However, this leads to "variable declared but never referenced" warnings on Intel Composer XE,
00291  * and we do not know how to get rid of them (bug 450).
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 } // end namespace Eigen
00437 
00438 #endif // EIGEN_CONSTANTS_H


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Thu Aug 27 2015 11:58:04