aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Added an extensible mechanism to support any kind of rotationGravatar Gael Guennebaud2008-06-15
| | | | | | representation in Transform via the template static class ToRotationMatrix. Added a lightweight AngleAxis class (similar to Rotation2D).
* * split Product to a DiagonalProduct template specializationGravatar Gael Guennebaud2008-06-15
| | | | | | | | | | to optimize matrix-diag and diag-matrix products without making Product over complicated. * compilation fixes in Tridiagonalization and HessenbergDecomposition in the case of 2x2 matrices. * added an Orientation2D small class with similar interface than Quaternion (used by Transform to handle 2D and 3D orientations seamlessly) * added a couple of features in Transform.
* Started a Transform class in the Geometry module to representGravatar Gael Guennebaud2008-06-15
| | | | | homography. Fix indentation in Quaternion.h
* * Added a generalized eigen solver for the selfadjoint case.Gravatar Gael Guennebaud2008-06-14
| | | | | | (as new members to SelfAdjointEigenSolver) The QR module now depends on Cholesky. * Fix Transpose to correctly preserve the *TriangularBit.
* Add QR and Cholesky module instantiations in the lib.Gravatar Gael Guennebaud2008-06-14
| | | | To try it with the unit tests set the cmake variable TEST_LIB to ON.
* * even though the _Flags default to the corrected value, still correctGravatar Benoit Jacob2008-06-13
| | | | | | | them in the ei_traits, so that they're guaranteed even if the user specified his own non-default flags (like before). Measured to not make compilation any slower.
* * 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.
* Added a Hessenberg decomposition class for both real and complex matrices.Gravatar Gael Guennebaud2008-06-08
| | | | | | | This is the first step towards a non-selfadjoint eigen solver. Notes: - We might consider merging Tridiagonalization and Hessenberg toghether ? - Or we could factorize some code into a Householder class (could also be shared with QR)
* * rewrite of the QR decomposition:Gravatar Gael Guennebaud2008-06-07
| | | | | | - works for complex - allows direct access to the matrix R * removed the scale by the matrix dimensions in MatrixBase::isMuchSmallerThan(scalar)
* * remove Cross product expression: MatrixBase::cross() now returns a temporaryGravatar Gael Guennebaud2008-06-07
| | | | | | which is even better optimized by the compiler. * Quaternion no longer inherits MatrixBase. Instead it stores the coefficients using a Matrix<> and provides only relevant methods.
* * move some compile time "if" to their respective unroller (assign and dot)Gravatar Gael Guennebaud2008-06-07
| | | | | * fix a couple of compilation issues when unrolling is disabled * reduce default unrolling limit to a more reasonable value
* Updated fuzzy comparisons to use L2 norm as all my experimentsGravatar Gael Guennebaud2008-06-06
| | | | | | tends to show L2 norm works very well here. (the legacy implementation is still available via a preprocessor token to allow further experiments if needed...)
* fix a compilation issue in non debug modeGravatar Gael Guennebaud2008-06-06
|
* fix some compile errors with gcc 4.3, some warnings, some documentationGravatar Benoit Jacob2008-06-06
|
* add an optimized path for the tridiagonalization of a 3x3 matrix.Gravatar Gael Guennebaud2008-06-04
| | | | (useful for plane fitting, and covariance analysis of 3D data)
* added a static assertion mechanismGravatar Gael Guennebaud2008-06-04
| | | | (see notes in Core/util/StaticAssert.h for details)
* hack to to make the nomalloc unit test compiles with -pedanticGravatar Gael Guennebaud2008-06-04
|
* update of the eigeinsolver unit test to check complexGravatar Gael Guennebaud2008-06-03
|
* fix eigenvectors computations :)Gravatar Gael Guennebaud2008-06-03
|
* * add CommaInitializer::finished to allow the use of (Matrix3() << v0, v1, ↵Gravatar Gael Guennebaud2008-06-03
| | | | | | | | v2).finished() as an argument of a function. Other possibilities for the name could be "end" or "matrix" ?? * various update in Quaternion, in particular I added a lot of FIXME about the API options, these have to be discussed and fixed.
* improved Quaternion class:Gravatar Gael Guennebaud2008-06-03
| | | | | | | - Euler angles and angle axis conversions, - stable spherical interpolation - documentation - update the respective unit test
* fix building of examplesGravatar Gael Guennebaud2008-06-03
|
* add a geometry unit test and fix a couple of typo in Quaternion.hGravatar Gael Guennebaud2008-06-03
|
* - get the doc of the enums in MatrixBase rightGravatar Benoit Jacob2008-06-03
| | | | | | | | | - get the doc of the flags in Constants right - finally give up with SEPARATE_MEMBER_PAGES: it triggers too big Doxygen bugs, and produces too many small pages. So we have one huge page for MatrixBase at currently 300kb and going up, so the solution especially for users with low bandwidth will be to provide an archive of the html documentation.
* * start of the Geometry module with a cross product and quaternion expressionsGravatar Gael Guennebaud2008-06-02
| | | | | (haven't tried them yet) * applied the meta selector rule to MatrixBase::swap()
* big changes in Doxygen configuration; work around bug with doxygen parsing ofGravatar Benoit Jacob2008-06-02
| | | | | initialized enum values showing the last word the initializer instead of the actual enum value's name; add some more docs.
* work around Doxygen bug triggered by r814874, which caused many classes to ↵Gravatar Benoit Jacob2008-06-02
| | | | | | disappear from the docs.
* doc improvements: fix linking in Mainpage.dox, improved Doxyfile.inGravatar Benoit Jacob2008-06-02
|
* added unit tests for sizeof and dynamic memory allocationGravatar Gael Guennebaud2008-06-02
|
* Added the computation of eigen vectors in the symmetric eigen solver.Gravatar Gael Guennebaud2008-06-02
| | | | | However the eigen vectors are not correct yet, but I really cannot find the problem.
* since m*m.adjoint() is positive, so are its eigenvalues, so no need forGravatar Benoit Jacob2008-06-02
| | | | cwiseAbs()
* - add MatrixBase::eigenvalues() convenience methodGravatar Benoit Jacob2008-06-02
| | | | | | - add MatrixBase::matrixNorm(); in the non-selfadjoint case, we reduce to the selfadjoint case by using the "C*-identity" a.k.a. norm of x = sqrt(norm of x * x.adjoint())
* fix a couple of issues making the eigensolver test compile and run without ↵Gravatar Benoit Jacob2008-06-02
| | | | | | | | | aborting on an assert. Had to fix a stupid bug in Block -- very strange we hadn't hit it before. However the test still fails.
* Rewrite from scratch of the eigen solver for symmetric matricesGravatar Gael Guennebaud2008-06-02
| | | | | which now supports selfadjoint matrix. The implementation follows Golub's famous book.
* * added a Tridiagonalization class for selfadjoint matricesGravatar Gael Guennebaud2008-06-01
| | | | | | | | | * added MatrixBase::real() * added the ability to extract a selfadjoint matrix from the lower or upper part of a matrix, e.g.: m.extract<Upper|SelfAdjoint>() will ignore the strict lower part and return a selfadjoint. This is compatible with ZeroDiag and UnitDiag.
* meagre outcome for so much time spent!Gravatar Benoit Jacob2008-06-01
| | | | | | * fix inverse() bug discovered by Gael's test * fix warnings introduced by the new Diagonal stuff * update Doxyfile to v1.5.6
* added a unit test for InverseGravatar Gael Guennebaud2008-05-31
| | | | | discovered that m1 == m1.inverse().inverse() fails though m1.inverse()*m1 == I
* added an *optional* Eigen2 dynamic library.Gravatar Gael Guennebaud2008-05-31
| | | | | it allows the possiblity to save some compilation time by linking to it *and* defining the token EIGEN_EXTERN_INSTANCIATIONS
* 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.