$treeview $search $mathjax
Eigen
3.2.5
$projectbrief
|
$projectbrief
|
$searchbox |
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 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 } // end namespace Eigen 00450 00451 #endif // EIGEN_CONSTANTS_H