aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src
Commit message (Collapse)AuthorAge
...
* bugfix in CholeskyWithoutSquareRoot::solve found by Timothy HunterGravatar Gael Guennebaud2008-08-16
|
* change solveTriangularInPlace() to take a pointer as input (as discussed on ↵Gravatar Gael Guennebaud2008-08-12
| | | | | | IRC). extended the documentation of the triangular solver.
* last small fixes, this is alpha6, eigen2 is now ready for eigen1 apps toGravatar Benoit Jacob2008-08-12
| | | | port to.
* Complete LU documentationGravatar Benoit Jacob2008-08-11
|
* * add Regression module, from eigen1, improved, with doc and unit-test.Gravatar Benoit Jacob2008-08-11
| | | | | | | | | * fix .normalized() so that Random().normalized() works; since the return type became complicated to write down i just let it return an actual vector, perhaps not optimal. * add Sparse/CMakeLists.txt. I suppose that it was intentional that it didn't have CMakeLists, but in <=2.0 releases I'll just manually remove Sparse.
* Renamed allowAligned() => forceAligned() and added the constants ForceAlignedGravatar Gael Guennebaud2008-08-09
| | | | | and AsRequested for the PacketAccess parameter of MapBase. Updated respective documentation.
* renamed inverseProduct => solveTriangularGravatar Gael Guennebaud2008-08-09
|
* * add LU unit-test. Seems like we have very good numerical stability!Gravatar Benoit Jacob2008-08-09
| | | | * some cleanup, and grant me a copyright line on the determinant test.
* * 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
* * reimplement the general case of inverse() on top of LU. Advantages:Gravatar Benoit Jacob2008-08-09
| | | | | | | | | | | | - removes much code - 2.5x faster (even though LU uses complete pivoting contrary to what inverse used to do!) - there _were_ numeric stability problems with the partial pivoting approach of inverse(), with 200x200 matrices inversion failed almost half of the times (overflow). Now these problems are solved thanks to complete pivoting. * remove some useless stuff in LU
* *implement LU solver (solves any rectangular system)Gravatar Benoit Jacob2008-08-09
| | | | | | *in test/CMakeLists : modify EI_ADD_TEST so that 2nd argument is additional compiler flags. used to add -O2 to test_product_large so it doesn't take forever.
* * fix bug in SwapWrapper : store the wrapped expression by referenceGravatar Benoit Jacob2008-08-09
| | | | | | * optimize setIdentity: when the matrix is large enough it is better to setZero() and overwrite the diagonal * start of LU solver, disabled for now
* forgot to remove that old codeGravatar Benoit Jacob2008-08-07
|
* - add kernel computation using the triangular solverGravatar Benoit Jacob2008-08-07
| | | | | | - take advantage of the fact that our LU dec sorts the eigenvalues of U in decreasing order - add meta selector in determinant
* LU: remove partial-pivoting path (moderately useful since it's doesGravatar Benoit Jacob2008-08-07
| | | | | | | | not allow to easily get the rank), fix a bug (which could have been triggered by matrices having coefficients of very different magnitudes). Part: add an assert to prevent hard to find bugs Swap: update comments
* New implementation of Swap as discussed, reusing Assign. Makes LU runGravatar Benoit Jacob2008-08-05
| | | | 10% faster overall.
* introduce copyCoeff and copyPacket methods in MatrixBase, used byGravatar Benoit Jacob2008-08-05
| | | | | Assign, in preparation for new Swap impl reusing Assign code. remove last remnant of old Inverse class in Transform.
* Add partial pivoting runtime option to LU.Gravatar Benoit Jacob2008-08-05
| | | | | | | Note: in fact, inverse() always uses partial pivoting because the algo currently used doesn't make sense with complete pivoting. No num stability issue so far even with size 200x200. If there is any problem we can of course reimplement inverse on top of LU.
* further big perf improvement in InverseGravatar Benoit Jacob2008-08-04
|
* big performance improvement in inverse and LUGravatar Benoit Jacob2008-08-04
|
* * LU decomposition, supporting all rectangular matrices, with fullGravatar Benoit Jacob2008-08-04
| | | | | | | | | | pivoting for better numerical stability. For now the only application is determinant. * New determinant unit-test. * Disable most of Swap.h for now as it makes LU fail (mysterious). Anyway Swap needs a big overhaul as proposed on IRC. * Remnants of old class Inverse removed. * Some warnings fixed.
* fix two perf issues in product.Gravatar Gael Guennebaud2008-08-03
| | | | | fix positive definite test in Cholesky. remove #include <cstring> in CoreDeclaration.
* fix compile errors with gcc 4.3: unresolved func call toGravatar Benoit Jacob2008-08-03
| | | | ei_cache_friendly_product, and undeclared memcpy
* Added a ei_palign function align a packet from two others.Gravatar Gael Guennebaud2008-08-03
| | | | | This allows much faster code dealing with unligned as in the updated matrix-vector product functions.
* 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
* removed the packet specializations of some functorsGravatar Gael Guennebaud2008-07-31
| | | | (GCC generates better code without those "optimizations")
* Several compilation fixes for MSVC and NVCC, basically:Gravatar Gael Guennebaud2008-07-29
| | | | | | | | - added explicit enum to int conversion where needed - if a function is not defined as declared and the return type is "tricky" then the type must be typedefined somewhere. A "tricky return type" can be: * a template class with a default parameter which depends on another template parameter * a nested template class, or type of a nested template class
* fix some internal asserts in CacheFrinedlyProductGravatar Gael Guennebaud2008-07-27
|
* Fix a couple issues introduced in the previous commit:Gravatar Gael Guennebaud2008-07-26
| | | | | * removed DirectAccessBit from Part * use a template specialization in inverseProduct() to transform a Part xpr to a Flagged xpr
* * Rewrite the triangular solver so that we can take advantage of our ↵Gravatar Gael Guennebaud2008-07-26
| | | | | | | | | | | efficient matrix-vector products: => up to 6 times faster ! * Added DirectAccessBit to Part * Added an exemple of a cwise operator * Renamed perpendicular() => someOrthogonal() (geometry module) * Fix a weired bug in ei_constant_functor: the default copy constructor did not copy the imaginary part when the single member of the class is a complex...
* bugfix in some internal asserts of CacheFriendlyProductGravatar Gael Guennebaud2008-07-26
|
* 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 some complex alignment issues in the cache friendly matrix-vector ↵Gravatar Gael Guennebaud2008-07-23
| | | | | | | products. * Minor update of the cores of the Cholesky algorithms to make them more friendly wrt to matrix-vector products => speedup x5 !
* Add .perpendicular() function in Geometry module (adapted from Eigen1)Gravatar Gael Guennebaud2008-07-22
| | | | | | Documentation: * add an overview for each module. * add an example for .all() and Cwise::operator<
* Fix compilation issues with icc and g++ < 4.1. Those include:Gravatar Gael Guennebaud2008-07-21
| | | | | | | | | | - conflicts with operator * overloads - discard the use of ei_pdiv for interger (g++ handles operators on __m128* types, this is why it worked) - weird behavior of icc in fixed size Block() constructor complaining the initializer of m_blockRows and m_blockCols were missing while we are in fixed size (maybe this hide deeper problem since this is a recent one, but icc gives only little feedback)
* * Merge Extract and Part to the Part expression.Gravatar Gael Guennebaud2008-07-21
| | | | | | Renamed "MatrixBase::extract() const" to "MatrixBase::part() const" * Renamed static functions identity, zero, ones, random with an upper case first letter: Identity, Zero, Ones and Random.
* Various documentation improvements, in particualr in Cholesky and Geometry ↵Gravatar Gael Guennebaud2008-07-20
| | | | | | module. Added doxygen groups for Matrix typedefs and the Geometry module
* Add cholesky's members to MatrixBaseGravatar Gael Guennebaud2008-07-19
| | | | Various documentation improvements including new snippets (AngleAxis and Cholesky)
* Added an automatically generated list of selected examples in the documentation.Gravatar Gael Guennebaud2008-07-19
| | | | Added the custom gemetry_module tag, and use it.
* Added MatrixBase::Unit*() static function to easily create unit/basis vectors.Gravatar Gael Guennebaud2008-07-19
| | | | | | | Removed EulerAngles, addes typdefs for Quaternion and AngleAxis, and added automatic conversions from Quaternion/AngleAxis to Matrix3 such that: Matrix3f m = AngleAxisf(0.2,Vector3f::UnitX) * AngleAxisf(0.2,Vector3f::UnitY); just works.
* Complete rewrite of partial reduction according to mailing list discussions.Gravatar Gael Guennebaud2008-07-19
|
* add some static asserts, use them, fix gcc 4.3 warning in Product.h.Gravatar Benoit Jacob2008-07-19
|
* * 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 !!)
* * big rework of Inverse.h:Gravatar Benoit Jacob2008-07-15
| | | | | | | | | | | - remove all invertibility checking, will be redundant with LU - general case: adapt to matrix storage order for better perf - size 4 case: handle corner cases without falling back to gen case. - rationalize with selectors instead of compile time if - add C-style computeInverse() * update inverse test. * in snippets, default cout precision to 3 decimal places * add some cmake module from kdelibs to support btl with cmake 2.4
* trivial fix in EulerAngles constructorGravatar Gael Guennebaud2008-07-15
|
* Optimization: added super efficient rowmajor * vector product (and vector * ↵Gravatar Gael Guennebaud2008-07-13
| | | | | | | | colmajor). It basically performs 4 dot products at once reducing loads of the vector and improving instructions scheduling. With 3 cache friendly algorithms, we now handle all product configurations with outstanding perf for large matrices.
* * Optimization: added a specialization of Block for xpr with DirectAccessBitGravatar Gael Guennebaud2008-07-12
| | | | * some simplifications and fixes in cache friendly products
* Add a *very efficient* evaluation path for both col-major matrix * vectorGravatar Gael Guennebaud2008-07-12
| | | | | | and vector * row-major products. Currently, it is enabled only is the matrix has DirectAccessBit flag and the product is "large enough". Added the respective unit tests in test/product/cpp.
* some performance fixes in Assign.h reported by Gael. Some doc update inGravatar Benoit Jacob2008-07-10
| | | | Cwise.
* * added optimized paths for matrix-vector and vector-matrix productsGravatar Gael Guennebaud2008-07-09
| | | | | | (using either a cache friendly strategy or re-using dot-product vectorized implementation) * add LinearAccessBit to Transpose