aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
Commit message (Collapse)AuthorAge
* added optimized matrix times diagonal matrix product via Diagonal flag shortcut.Gravatar Gael Guennebaud2008-05-31
|
* moved purely "array" related stuff to a new module Array.Gravatar Gael Guennebaud2008-05-31
| | | | | | | | This include: - cwise Pow,Sin,Cos,Exp... - cwise Greater and other comparison operators - .any(), .all() and partial reduction - random
* updated EigenSolver to use .coeff / .coeffRefGravatar Gael Guennebaud2008-05-31
|
* simply a bit the basic product moving dynamic loopsGravatar Gael Guennebaud2008-05-31
| | | | | to the corresponding special case of the unrollers. the latter ones are therefore re-named *product_impl.
* * replace compile-time-if by meta-selector in Assign.hGravatar Gael Guennebaud2008-05-31
| | | | | as it speed up compilation. * fix minor typo introduced in the previous commit
* Added ArrayBit to get the ability to manipulate a Matrix like a simple scalar.Gravatar Gael Guennebaud2008-05-29
| | | | In particular this flag changes the behavior of operator* to a coeff wise product.
* now the unit-tests (hence all of Eigen) don't depend on Qt at allGravatar Benoit Jacob2008-05-29
| | | | anymore.
* many small fixes and documentation improvements,Gravatar Benoit Jacob2008-05-29
| | | | this should be alpha5.
* * updated the assignement operator macro so that overloadsGravatar Gael Guennebaud2008-05-28
| | | | | | in MatrixBase work * removed product_selector and cleaned Product.h a bit * cleaned Assign.h a bit
* * change Flagged to take into account NestByValue onlyGravatar Gael Guennebaud2008-05-28
| | | | | * bugfix in Assign and cache friendly product (weird that worked before) * improved argument evaluation in Product
* * added _*coeffRef members in NestedByValueGravatar Gael Guennebaud2008-05-28
| | | | | | * added ConjugateReturnType and AdjointReturnType that are type-defined to Derived& and Transpose<Derived> if the scalar type is not complex: this avoids abusive copies in the cache friendly Product
* hehe, the complicated nesting scheme in Flagged in the previous commitGravatar Benoit Jacob2008-05-28
| | | | | | | | | | | was a sign that we were doing something wrong. In fact, having NestByValue as a special case of Flagged was wrong, and the previous commit, while not buggy, was inefficient because then when the resulting NestByValue xpr was nested -- hence copied -- the original xpr which was already nested by value was copied again; hence instead of 1 copy we got 3 copies. The solution was to ressuscitate the old Temporary.h (renamed NestByValue.h) as it was the right approach.
* * find the proper way of nesting the expression in Flagged:Gravatar Benoit Jacob2008-05-28
| | | | | | | | | | | | | finally that's more subtle than just using ei_nested, because when flagging with NestByValueBit we want to store the expression by value already, regardless of whether it already had the NestByValueBit set. * rename temporary() ----> nestByValue() * move the old Product.h to disabled/, replace by what was ProductWIP.h * tweak -O and -g flags for tests and examples * reorder the tests -- basic things go first * simplifications, e.g. in many methoeds return derived() and count on implicit casting to the actual return type. * strip some not-really-useful stuff from the heaviest tests
* * fix the QR module to use extract/part instead of the previous triangular stuffGravatar Gael Guennebaud2008-05-27
| | | | | * added qr and eigensolver tests * fix a compilation warning in Matrix copy constructor
* part 2 of big change: rename Triangular.h -> Extract.hGravatar Benoit Jacob2008-05-27
| | | | (svn required to commit that separately)
* - introduce Part and Extract classes, splitting and extending the formerGravatar Benoit Jacob2008-05-27
| | | | | | | | | | Triangular class - full meta-unrolling in Part - move inverseProduct() to MatrixBase - compilation fix in ProductWIP: introduce a meta-selector to only do direct access on types that support it. - phase out the old Product, remove the WIP_DIRTY stuff. - misc renaming and fixes
* some documentation fixes (Cwise* and Cholesky)Gravatar Gael Guennebaud2008-05-22
|
* * improved product performance:Gravatar Gael Guennebaud2008-05-22
| | | | | | | - fallback to normal product for small dynamic matrices - overloaded "c += (a * b).lazy()" to avoid the expensive and useless temporary and setZero() in such very common cases. * fix a couple of issues with the flags
* remove Like1DArrayBit in TransposeGravatar Gael Guennebaud2008-05-22
|
* Fix compilation issues with MSVC and NVCC.Gravatar Gael Guennebaud2008-05-15
| | | | Added a few typedef of complex return types in MatrixBase (Needed by MSVC)
* Introduce generic Flagged xpr, remove already Lazy.h and Temporary.hGravatar Benoit Jacob2008-05-14
| | | | Rename DefaultLostFlagMask --> HerediraryBits
* * Clean a bit the eigenvalue solver: if the matrix is known to beGravatar Gael Guennebaud2008-05-13
| | | | | selfadjoint at compile time, then it returns real eigenvalues. * Fix a couple of bugs with the new product.
* -fix certain #includesGravatar Benoit Jacob2008-05-12
| | | | -fix CMakeLists, public headers weren't getting installed
* * Added several cast to int of the enums (needed for some compilers)Gravatar Gael Guennebaud2008-05-12
| | | | | | * Fix a mistake in CwiseNullary. * Added a CoreDeclarions header that declares only the forward declarations and related basic stuffs.
* 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)
* move arch-specific code to arch/SSE and arch/AltiVec subdirs.Gravatar Benoit Jacob2008-05-12
| | | | rename the noarch PacketMath.h to DummyPacketMath.h
* * Give Konstantinos a copyright lineGravatar Benoit Jacob2008-05-12
| | | | | | | | * Fix compilation of Inverse.h with vectorisation * Introduce EIGEN_GNUC_AT_LEAST(x,y) macro doing future-proof (e.g. gcc v5.0) check * Only use ProductWIP if vectorisation is enabled * rename EIGEN_ALWAYS_INLINE -> EIGEN_INLINE with fall-back to inline keyword * some cleanup/indentation
* * 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.
* * split PacketMath.h to SSE and Altivec specific filesGravatar Gael Guennebaud2008-05-05
| | | | | * improved the flexibility of the new product implementation, now all sizes seems to be properly handled.
* * Started support for unaligned vectorization.Gravatar Gael Guennebaud2008-05-05
| | | | | | | | | | | | | * Introduce a new highly optimized matrix-matrix product for large matrices. The code is still highly experimental and it is activated only if you define EIGEN_WIP_PRODUCT at compile time. Currently the third dimension of the product must be a factor of the packet size (x4 for floats) and the right handed side matrix must be column major. Moreover, currently c = a*b; actually computes c += a*b !! Therefore, the code is provided for experimentation purpose only ! These limitations will be fixed soon or later to become the default product implementation.
* * Patch by Konstantinos Margaritis: AltiVec vectorization.Gravatar Benoit Jacob2008-05-03
| | | | * Fix several warnings, temporarily disable determinant test.
* slighly improved the cache friendly product to use mul-add onlyGravatar Gael Guennebaud2008-05-03
|
* added packet mul-add function (ei_pmad) and updated Product to use it.Gravatar Gael Guennebaud2008-05-03
| | | | | this change nothing for current SSE architecture but might be helpful for altivec/cell and up comming AMD processors.
* Removed ei_pload1, use posix_memalign to allocate aligned memory,Gravatar Gael Guennebaud2008-05-02
| | | | | and make Product ok when only one side is vectorizable (and the product is still vectorized)
* Make products always eval into expressions. Improves performanceGravatar Benoit Jacob2008-05-02
| | | | in benchmark. Still not as fasts as explicit eval(), strangely.
* fix flag and cost computations for nested expressionsGravatar Gael Guennebaud2008-05-01
|
* nullary xpr are now vectorizedGravatar Gael Guennebaud2008-05-01
|
* Enable vectorization of product with dynamic matrices,Gravatar Gael Guennebaud2008-05-01
| | | | | | extended cache optimal product to work in any row/column major situations, and a few bugfixes (forgot to add the Cholesky header, vectorization of CwiseBinary)
* some cleaning in Cholesky and removed evil ei_sqrt of complexGravatar Gael Guennebaud2008-04-27
|
* * added ei_sqrt for complexGravatar Gael Guennebaud2008-04-27
| | | | | * updated Cholesky to support complex * correct result_type for abs and abs2 functors
* added Cholesky moduleGravatar Gael Guennebaud2008-04-27
|
* Fixed a couple of issues introduced in previous commits.Gravatar Gael Guennebaud2008-04-26
| | | | Added a test for Triangular.
* Added triangular assignement, e.g.:Gravatar Gael Guennebaud2008-04-26
| | | | | | | | | | | m.upper() = a+b; only updates the upper triangular part of m. Note that: m = (a+b).upper(); updates all coefficients of m (but half of the additions will be skiped) Updated back/forward substitution to better use Eigen's capability.
* 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.
* fix a bug in determinant of 4x4 matrices and a small type issue in InverseGravatar Gael Guennebaud2008-04-26
|
* Various fixes in:Gravatar Gael Guennebaud2008-04-25
| | | | | | | | - vector to vector assign - PartialRedux - Vectorization criteria of Product - returned type of normalized - SSE integer mul
* Make the explicit vectorization much more flexible:Gravatar Gael Guennebaud2008-04-25
| | | | | | | | - support dynamic sizes - support arbitrary matrix size when the matrix can be seen as a 1D array (except for fixed size matrices where the size in Bytes must be a factor of 16, this is to allow compact storage of a vector of matrices) Note that the explict vectorization is still experimental and far to be completely tested.
* forgot to add a file in the previous commitGravatar Gael Guennebaud2008-04-24
|
* Fix a couple of issue with the vectorization. In particular, default ei_p* ↵Gravatar Gael Guennebaud2008-04-24
| | | | | | | | | functions are provided to handle not suported types seemlessly. Added a generic null-ary expression with null-ary functors. They replace Zero, Ones, Identity and Random.