aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core/Map.h
Commit message (Collapse)AuthorAge
...
* * Refactoring of the class hierarchy: introduction of DenseDirectAccessBase, ↵Gravatar Benoit Jacob2010-04-16
| | | | | | | | | removal of extra _Base/_Options template parameters. * Introduction of strides-at-compile-time so for example the optimized code really knows when it needs to evaluate to a temporary * StorageKind / XprKind * Quaternion::setFromTwoVectors: use JacobiSVD instead of SVD * ComplexSchur: support the 1x1 case
* fix the flags and matrix options, to always have the right RowMajor bit in ↵Gravatar Benoit Jacob2010-03-19
| | | | the vector case
* implement the idea that row-vectors have the RowMajorBit and col-vectors don't.Gravatar Benoit Jacob2010-03-09
|
* Document Map and Stride, add examples.Gravatar Benoit Jacob2010-02-26
|
* Fix Map-with-Stride and cover it by new unit tests.Gravatar Benoit Jacob2010-02-26
|
* * Implement the ByOuterInner accessorsGravatar Benoit Jacob2010-02-25
| | | | | | | | * use them (big simplification in Assign.h) * axe (Inner|Outer)StrideAtCompileTime that were just introduced * ei_int_if_dynamic now asserts that the size is the expected one: adapt to that in Block.h * add rowStride() / colStride() in DenseBase * implement innerStride() / outerStride() everywhere needed
* miserable half-working state, commiting to a fork just in case, just to perfectGravatar Benoit Jacob2010-02-18
| | | | | my day, my hard disk would die. Will write a more detailed commit message once it's working.
* lot of cleaning:Gravatar Gael Guennebaud2010-01-22
| | | | | | - clean the *_PUBLIC_INTERFACE_* - update Diagonal, ReturnByValue, ForceAlignedAccess, UnaryView, etc. to support array - many other small stuff
* More documentation improvements.Gravatar Hauke Heibel2010-01-16
|
* add a DenseBase class for MAtrixBase and ArrayBase and more code factorisationGravatar Gael Guennebaud2009-12-04
|
* * remove EnforceAlignedAccess option to Block, VectorBlock, Map and MapBaseGravatar Gael Guennebaud2009-11-20
| | | | | | because thanks to the previous commit this is not needed anymore * add a more general ForceAlignedAccess expression which can be used for any expression. It is already used by StableNorm.h.
* * extend Map to allow the user to specify whether the mapped dataGravatar Gael Guennebaud2009-10-23
| | | | | | | is aligned or not. This is done using the Aligned constant: Map<MatrixType,Aligned>::Map(data); * rename ForceAligned to EnforceAlignedAccess, and update its doc, and emphasize this is mainly an internal stuff.
* remove sentence "Eigen itself is part of the KDE project."Gravatar Benoit Jacob2009-05-22
| | | | it never made very precise sense. but now does it still make any?
* fix MapBase's ForceAligned concept which was not working at all....Gravatar Gael Guennebaud2009-03-09
|
* add "remap" snippet using placement newGravatar Gael Guennebaud2009-02-09
|
* * remove set(), revert to old behavior where = resizesGravatar Benoit Jacob2009-01-21
| | | | | | | | | | * try to be clever in matrix ctors and operator=: be lazy when we can, always allow to copy rowvector into columnvector, check the template parameters, try to factor the code better * add missing copy ctor in UnalignedType * fix bug in the traits of DiagonalProduct * renaming: EIGEN_TUNE_FOR_CPU_CACHE_SIZE * update the dox a little
* bugfix in Map by Keir MierleGravatar Gael Guennebaud2009-01-18
|
* * Much better, consistent error msgs when mixing different scalar types:Gravatar Benoit Jacob2008-12-03
| | | | | | | | | | | | | - in matrix-matrix product, static assert on the two scalar types to be the same. - Similarly in CwiseBinaryOp. POTENTIALLY CONTROVERSIAL: we don't allow anymore binary ops to take two different scalar types. The functors that we defined take two args of the same type anyway; also we still allow the return type to be different. Again the reason is that different scalar types are incompatible with vectorization. Better have the user realize explicitly what mixing different numeric types costs him in terms of performance. See comment in CwiseBinaryOp constructor. - This allowed to fix a little mistake in test/regression.cpp, mixing float and double - Remove redundant semicolon (;) after static asserts
* Update e-mail addressGravatar Benoit Jacob2008-11-24
|
* Add Matrix::Map() and Matrix::AlignedMap() static methodsGravatar Benoit Jacob2008-11-03
|
* doc and use sed to clean the class hierarchy instead ofGravatar Gael Guennebaud2008-08-28
| | | | preprocessor directives.
* * move memory related stuff to util/Memory.hGravatar Gael Guennebaud2008-08-26
| | | | | * clean ugly doxygen inheritence of expressions * keep improving the documentation... slowly !
* * remove LargeBit and related stuffGravatar Gael Guennebaud2008-08-23
| | | | | | | * replaced the Flags template parameter of Matrix by StorageOrder and move it back to the 4th position such that we don't have to worry about the two Max* template parameters * extended EIGEN_USING_MATRIX_TYPEDEFS with the ei_* math functions
* add resize() methods to Map, doing nothing but assertions.Gravatar Benoit Jacob2008-08-21
| | | | | This is useful in Krita where I call lu().solve() with a Map object as result. As solve() resizes the result, this was needed.
* Renamed allowAligned() => forceAligned() and added the constants ForceAlignedGravatar Gael Guennebaud2008-08-09
| | | | | and AsRequested for the PacketAccess parameter of MapBase. Updated respective documentation.
* * Big change in Block and Map:Gravatar Gael Guennebaud2008-08-09
| | | | | | | | | | | | | | - added a MapBase base xpr on top of which Map and the specialization of Block are implemented - MapBase forces both aligned loads (and aligned stores, see below) in expressions such as "x.block(...) += other_expr" * Significant vectorization improvement: - added a AlignedBit flag meaning the first coeff/packet is aligned, this allows to not generate extra code to deal with the first unaligned part - removed all unaligned stores when no unrolling - removed unaligned loads in Sum when the input as the DirectAccessBit flag * Some code simplification in CacheFriendly product * Some minor documentation improvements
* Optimizations:Gravatar Gael Guennebaud2008-08-01
| | | | | | | | * faster matrix-matrix and matrix-vector products (especially for not aligned cases) * faster tridiagonalization (make it using our matrix-vector impl.) Others: * fix Flags of Map * split the test_product to two smaller ones
* update the inverse test a littleGravatar Benoit Jacob2008-07-26
| | | | | make use of static asserts in Map fix 2 warnings in CacheFriendlyProduct: unused var 'Vectorized'
* * Fix a couple of issues related to the recent cache friendly productsGravatar Gael Guennebaud2008-07-19
| | | | | | | * Improve the efficiency of matrix*vector in unaligned cases * Trivial fixes in the destructors of MatrixStorage * Removed the matrixNorm in test/product.cpp (twice faster and that assumed the matrix product was ok while checking that !!)
* fix a couple of issues in the new Map.hGravatar Benoit Jacob2008-06-27
|
* * rework Map, allow vectorizationGravatar Benoit Jacob2008-06-27
| | | | | | | | * rework PacketMath and DummyPacketMath, make these actual template specializations instead of just overriding by non-template inline functions * introduce ei_ploadt and ei_pstoret, make use of them in Map and Matrix * remove Matrix::map() methods, use Map constructors instead.
* change derived classes methods from "private:_method()"Gravatar Benoit Jacob2008-06-26
| | | | | | | | to "public:method()" i.e. reimplementing the generic method() from MatrixBase. improves compilation speed by 7%, reduces almost by half the call depth of trivial functions, making gcc errors and application backtraces nicer...
* * add bench/benchVecAdd.cpp by Gael, fix crash (ei_pload on non-aligned)Gravatar Benoit Jacob2008-06-26
| | | | | | | | | | | | * introduce packet(int), make use of it in linear vectorized paths --> completely fixes the slowdown noticed in benchVecAdd. * generalize coeff(int) to linear-access xprs * clarify the access flag bits * rework api dox in Coeffs.h and util/Constants.h * improve certain expressions's flags, allowing more vectorization * fix bug in Block: start(int) and end(int) returned dyn*dyn size * fix bug in Block: just because the Eval type has packet access doesn't imply the block xpr should have it too.
* * make the _Flags template parameter of Matrix default to the correctedGravatar Benoit Jacob2008-06-13
| | | | | | | | | flags. This ensures that unless explicitly messed up otherwise, a Matrix type is equal to its own Eval type. This seriously reduces the number of types instantiated. Measured +13% compile speed, -7% binary size. * Improve doc of Matrix template parameters.
* Introduce generic Flagged xpr, remove already Lazy.h and Temporary.hGravatar Benoit Jacob2008-05-14
| | | | Rename DefaultLostFlagMask --> HerediraryBits
* put inline keywords everywhere appropriate. So we don't need anymore to passGravatar Benoit Jacob2008-05-12
| | | | -finline-limit=1000 to gcc to get good performance. By the way some cleanup.
* * Draft of a eigenvalues solverGravatar Gael Guennebaud2008-05-12
| | | | | | | | | | | | | | | (does not support complex and does not re-use the QR decomposition) * Rewrite the cache friendly product to have only one instance per scalar type ! This significantly speeds up compilation time and reduces executable size. The current drawback is that some trivial expressions might be evaluated like conjugate or negate. * Renamed "cache optimal" to "cache friendly" * Added the ability to directly access matrix data of some expressions via: - the stride()/_stride() methods - DirectAccessBit flag (replace ReferencableBit)
* * Added ReferencableBit flag to known if coeffRef is available.Gravatar Gael Guennebaud2008-05-08
| | | | | | | | | | | (needed by the new product implementation) * Make the packet* members template to support aligned and unaligned access. This makes Block vectorizable. Combined with ReferencableBit, we should be able to determine at runtime (in some specific cases) if an aligned vectorization is possible or not. * Improved the new product implementation to robustly handle all cases, it now passes all the tests. * Renamed the packet version ei_predux to ei_preduxp to avoid name collision.
* Added Triangular expression to extract upper or lower (strictly or not)Gravatar Gael Guennebaud2008-04-26
| | | | | | | | | | | part of a matrix. Triangular also provide an optimised method for forward and backward substitution. Further optimizations regarding assignments and products might come later. Updated determinant() to take into account triangular matrices. Started the QR module with a QR decompostion algorithm. Help needed to build a QR algorithm (eigen solver) based on it.
* Added initial experimental support for explicit vectorization.Gravatar Gael Guennebaud2008-04-09
| | | | | | | | | | | | | Currently only the following platform/operations are supported: - SSE2 compatible architecture - compiler compatible with intel's SSE2 intrinsics - float, double and int data types - fixed size matrices with a storage major dimension multiple of 4 (or 2 for double) - scalar-matrix product, component wise: +,-,*,min,max - matrix-matrix product only if the left matrix is vectorizable and column major or the right matrix is vectorizable and row major, e.g.: a.transpose() * b is not vectorized with the default column major storage. To use it you must define EIGEN_VECTORIZE and EIGEN_INTEL_PLATFORM.
* -new: recursive costs system, useful to determine automaticallyGravatar Benoit Jacob2008-04-03
| | | | | | | | when to evaluate arguments and when to meta-unroll. -use it in Product to determine when to eval args. not yet used to determine when to unroll. for now, not used anywhere else but that'll follow. -fix badness of my last commit
* Make use of the LazyBit, introduce .lazy(), remove lazyProduct.Gravatar Benoit Jacob2008-03-31
|
* * introducte recursive Flags system for the expressionsGravatar Benoit Jacob2008-03-30
| | | | | | -- currently 3 flags: RowMajor, Lazy and Large -- only RowMajor actually used for now * many minor improvements
* * #define EIGEN_NDEBUG now also disables asserts. UsefulGravatar Benoit Jacob2008-03-26
| | | | | | | | | | | | to disable eigen's asserts without disabling one's own program's asserts. Notice that Eigen code should now use ei_assert() instead of assert(). * Remove findBiggestCoeff() as it's now almost redundant. * Improve echelon.cpp: inner for loop replaced by xprs. * remove useless "(*this)." here and there. I think they were first introduced by automatic search&replace. * fix compilation in Visitor.h (issue triggered by echelon.cpp) * improve comment on swap().
* get rid of MatrixRef, simplifications.Gravatar Benoit Jacob2008-03-13
|
* a lot of renamingGravatar Benoit Jacob2008-03-13
| | | | | | | | internal classes: AaBb -> ei_aa_bb IntAtRunTimeIfDynamic -> ei_int_if_dynamic unify UNROLLING_LIMIT (there was no reason to have operator= use a higher limit) etc...
* generalized ei_traits<>.Gravatar Benoit Jacob2008-03-12
| | | | | | Finally the importing macro is named EIGEN_BASIC_PUBLIC_INTERFACE because it does not only import the ei_traits, it also makes the base class a friend, etc.
* big change: MatrixBase only takes one template parameter "Derived", theGravatar Benoit Jacob2008-03-10
| | | | | | template parameter "Scalar" is removed. This is achieved by introducting a template <typename Derived> struct Scalar to achieve a forward-declaration of the Scalar typedefs.
* renaming: ref() --> asArg()Gravatar Benoit Jacob2008-03-04
|
* * Eigen compiles with any GCC versions from, at least, 3.3 without the ↵Gravatar Gael Guennebaud2008-03-04
| | | | | | previous ugly hack :) * Renamed the scalar functors with the "Scalar" prefix (instead of "Cwise")