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 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 // list of flags that are inherited by default
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 // FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
00195 // TODO: find out what to do with that. Adapt the AlignedBox API ?
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,  // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
00261   AutoAlign = 0, // FIXME --- clarify the situation
00263   DontAlign = 0x2
00264 };
00265 
00268 enum {
00270   OnTheLeft = 1,  
00272   OnTheRight = 2  
00273 };
00274 
00275 /* the following used to be written as:
00276  *
00277  *   struct NoChange_t {};
00278  *   namespace {
00279  *     EIGEN_UNUSED NoChange_t NoChange;
00280  *   }
00281  *
00282  * on the ground that it feels dangerous to disambiguate overloaded functions on enum/integer types.  
00283  * However, this leads to "variable declared but never referenced" warnings on Intel Composer XE,
00284  * and we do not know how to get rid of them (bug 450).
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 } // end namespace Eigen
00430 
00431 #endif // EIGEN_CONSTANTS_H


win_eigen
Author(s): Daniel Stonier
autogenerated on Wed Sep 16 2015 07:10:28