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 // Eigen is free software; you can redistribute it and/or
00008 // modify it under the terms of the GNU Lesser General Public
00009 // License as published by the Free Software Foundation; either
00010 // version 3 of the License, or (at your option) any later version.
00011 //
00012 // Alternatively, you can redistribute it and/or
00013 // modify it under the terms of the GNU General Public License as
00014 // published by the Free Software Foundation; either version 2 of
00015 // the License, or (at your option) any later version.
00016 //
00017 // Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
00018 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00019 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
00020 // GNU General Public License for more details.
00021 //
00022 // You should have received a copy of the GNU Lesser General Public
00023 // License and a copy of the GNU General Public License along with
00024 // Eigen. If not, see <http://www.gnu.org/licenses/>.
00025 
00026 #ifndef EIGEN_CONSTANTS_H
00027 #define EIGEN_CONSTANTS_H
00028 
00034 const int Dynamic = -1;
00035 
00039 const int Infinity = -1;
00040 
00061 const unsigned int RowMajorBit = 0x1;
00062 
00066 const unsigned int EvalBeforeNestingBit = 0x2;
00067 
00071 const unsigned int EvalBeforeAssigningBit = 0x4;
00072 
00089 const unsigned int PacketAccessBit = 0x8;
00090 
00091 #ifdef EIGEN_VECTORIZE
00092 
00100 const unsigned int ActualPacketAccessBit = PacketAccessBit;
00101 #else
00102 const unsigned int ActualPacketAccessBit = 0x0;
00103 #endif
00104 
00125 const unsigned int LinearAccessBit = 0x10;
00126 
00139 const unsigned int LvalueBit = 0x20;
00140 
00150 const unsigned int DirectAccessBit = 0x40;
00151 
00155 const unsigned int AlignedBit = 0x80;
00156 
00157 const unsigned int NestByRefBit = 0x100;
00158 
00159 // list of flags that are inherited by default
00160 const unsigned int HereditaryBits = RowMajorBit
00161                                   | EvalBeforeNestingBit
00162                                   | EvalBeforeAssigningBit;
00163 
00173 enum {
00175   Lower=0x1,                      
00177   Upper=0x2,                      
00179   UnitDiag=0x4, 
00181   ZeroDiag=0x8,
00183   UnitLower=UnitDiag|Lower, 
00185   UnitUpper=UnitDiag|Upper,
00187   StrictlyLower=ZeroDiag|Lower, 
00189   StrictlyUpper=ZeroDiag|Upper,
00191   SelfAdjoint=0x10
00192 };
00193 
00196 enum { 
00198   Unaligned=0, 
00200   Aligned=1 
00201 };
00202 
00203 enum { ConditionalJumpCost = 5 };
00204 
00207 // FIXME after the corner() API change, this was not needed anymore, except by AlignedBox
00208 // TODO: find out what to do with that. Adapt the AlignedBox API ?
00209 enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
00210 
00214 enum DirectionType { 
00217   Vertical, 
00220   Horizontal, 
00223   BothDirections 
00224 };
00225 
00226 enum ProductEvaluationMode { NormalProduct, CacheFriendlyProduct };
00227 
00230 enum {
00232   DefaultTraversal,
00234   LinearTraversal,
00237   InnerVectorizedTraversal,
00240   LinearVectorizedTraversal,
00243   SliceVectorizedTraversal,
00245   InvalidTraversal
00246 };
00247 
00250 enum {
00252   NoUnrolling,
00254   InnerUnrolling,
00257   CompleteUnrolling
00258 };
00259 
00263 enum {
00265   ColMajor = 0,
00267   RowMajor = 0x1,  // it is only a coincidence that this is equal to RowMajorBit -- don't rely on that
00269   AutoAlign = 0, // FIXME --- clarify the situation
00271   DontAlign = 0x2
00272 };
00273 
00276 enum {
00278   OnTheLeft = 1,  
00280   OnTheRight = 2  
00281 };
00282 
00283 /* the following could as well be written:
00284  *   enum NoChange_t { NoChange };
00285  * but it feels dangerous to disambiguate overloaded functions on enum/integer types.
00286  * If on some platform it is really impossible to get rid of "unused variable" warnings, then
00287  * we can always come back to that solution.
00288  */
00289 struct NoChange_t {};
00290 namespace {
00291   EIGEN_UNUSED NoChange_t NoChange;
00292 }
00293 
00294 struct Sequential_t {};
00295 namespace {
00296   EIGEN_UNUSED Sequential_t Sequential;
00297 }
00298 
00299 struct Default_t {};
00300 namespace {
00301   EIGEN_UNUSED Default_t Default;
00302 }
00303 
00306 enum {
00307   IsDense         = 0,
00308   IsSparse
00309 };
00310 
00314 enum AccessorLevels {
00316   ReadOnlyAccessors, 
00318   WriteAccessors, 
00320   DirectAccessors, 
00322   DirectWriteAccessors
00323 };
00324 
00327 enum DecompositionOptions {
00329   Pivoting            = 0x01, 
00331   NoPivoting          = 0x02, 
00333   ComputeFullU        = 0x04,
00335   ComputeThinU        = 0x08,
00337   ComputeFullV        = 0x10,
00339   ComputeThinV        = 0x20,
00342   EigenvaluesOnly     = 0x40,
00345   ComputeEigenvectors = 0x80,
00347   EigVecMask = EigenvaluesOnly | ComputeEigenvectors,
00350   Ax_lBx              = 0x100,
00353   ABx_lx              = 0x200,
00356   BAx_lx              = 0x400,
00358   GenEigMask = Ax_lBx | ABx_lx | BAx_lx
00359 };
00360 
00363 enum QRPreconditioners {
00365   NoQRPreconditioner,
00367   HouseholderQRPreconditioner,
00369   ColPivHouseholderQRPreconditioner,
00371   FullPivHouseholderQRPreconditioner
00372 };
00373 
00374 #ifdef Success
00375 #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
00376 #endif
00377 
00380 enum ComputationInfo {
00382   Success = 0,        
00384   NumericalIssue = 1, 
00386   NoConvergence = 2
00387 };
00388 
00392 enum TransformTraits {
00394   Isometry      = 0x1,
00397   Affine        = 0x2,
00399   AffineCompact = 0x10 | Affine,
00401   Projective    = 0x20
00402 };
00403 
00406 namespace Architecture
00407 {
00408   enum Type {
00409     Generic = 0x0,
00410     SSE = 0x1,
00411     AltiVec = 0x2,
00412 #if defined EIGEN_VECTORIZE_SSE
00413     Target = SSE
00414 #elif defined EIGEN_VECTORIZE_ALTIVEC
00415     Target = AltiVec
00416 #else
00417     Target = Generic
00418 #endif
00419   };
00420 }
00421 
00424 enum { CoeffBasedProductMode, LazyCoeffBasedProductMode, OuterProduct, InnerProduct, GemvProduct, GemmProduct };
00425 
00428 enum Action {GetAction, SetAction};
00429 
00431 struct Dense {};
00432 
00434 struct MatrixXpr {};
00435 
00437 struct ArrayXpr {};
00438 
00439 #endif // EIGEN_CONSTANTS_H


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:30:59