00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef EIGEN_CONSTANTS_H
00027 #define EIGEN_CONSTANTS_H
00028
00043 const int Dynamic = 10000;
00044
00048 const int Infinity = -1;
00049
00069 const unsigned int RowMajorBit = 0x1;
00070
00074 const unsigned int EvalBeforeNestingBit = 0x2;
00075
00079 const unsigned int EvalBeforeAssigningBit = 0x4;
00080
00097 const unsigned int PacketAccessBit = 0x8;
00098
00099 #ifdef EIGEN_VECTORIZE
00100
00108 const unsigned int ActualPacketAccessBit = PacketAccessBit;
00109 #else
00110 const unsigned int ActualPacketAccessBit = 0x0;
00111 #endif
00112
00133 const unsigned int LinearAccessBit = 0x10;
00134
00144 const unsigned int DirectAccessBit = 0x20;
00145
00149 const unsigned int AlignedBit = 0x40;
00150
00154 const unsigned int ZeroDiagBit = 0x80;
00155
00159 const unsigned int UnitDiagBit = 0x100;
00160
00164 const unsigned int SelfAdjointBit = 0x200;
00165
00169 const unsigned int UpperTriangularBit = 0x400;
00170
00174 const unsigned int LowerTriangularBit = 0x800;
00175
00179 const unsigned int SparseBit = 0x1000;
00180
00181
00182 const unsigned int HereditaryBits = RowMajorBit
00183 | EvalBeforeNestingBit
00184 | EvalBeforeAssigningBit
00185 | SparseBit;
00186
00187
00188 const unsigned int UpperTriangular = UpperTriangularBit;
00189 const unsigned int StrictlyUpperTriangular = UpperTriangularBit | ZeroDiagBit;
00190 const unsigned int LowerTriangular = LowerTriangularBit;
00191 const unsigned int StrictlyLowerTriangular = LowerTriangularBit | ZeroDiagBit;
00192 const unsigned int SelfAdjoint = SelfAdjointBit;
00193
00194
00195 const unsigned int UnitUpperTriangular = UpperTriangularBit | UnitDiagBit;
00196 const unsigned int UnitLowerTriangular = LowerTriangularBit | UnitDiagBit;
00197 const unsigned int Diagonal = UpperTriangular | LowerTriangular;
00198
00199 enum { Aligned, Unaligned };
00200 enum { ForceAligned, AsRequested };
00201 enum { ConditionalJumpCost = 5 };
00202 enum CornerType { TopLeft, TopRight, BottomLeft, BottomRight };
00203 enum DirectionType { Vertical, Horizontal };
00204 enum ProductEvaluationMode { NormalProduct, CacheFriendlyProduct, DiagonalProduct, SparseTimeSparseProduct, SparseTimeDenseProduct, DenseTimeSparseProduct };
00205
00206 enum {
00209 InnerVectorization,
00212 LinearVectorization,
00215 SliceVectorization,
00216 NoVectorization
00217 };
00218
00219 enum {
00220 NoUnrolling,
00221 InnerUnrolling,
00222 CompleteUnrolling
00223 };
00224
00225 enum {
00226 ColMajor = 0,
00227 RowMajor = 0x1,
00230 DontAlign = 0,
00232 AutoAlign = 0x2
00233 };
00234
00235 enum {
00236 IsDense = 0,
00237 IsSparse = SparseBit,
00238 NoDirectAccess = 0,
00239 HasDirectAccess = DirectAccessBit
00240 };
00241
00242 const int EiArch_Generic = 0x0;
00243 const int EiArch_SSE = 0x1;
00244 const int EiArch_AltiVec = 0x2;
00245
00246 #if defined EIGEN_VECTORIZE_SSE
00247 const int EiArch = EiArch_SSE;
00248 #elif defined EIGEN_VECTORIZE_ALTIVEC
00249 const int EiArch = EiArch_AltiVec;
00250 #else
00251 const int EiArch = EiArch_Generic;
00252 #endif
00253
00254 #endif // EIGEN_CONSTANTS_H