aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/LU
Commit message (Collapse)AuthorAge
* oops, didn't want to commit thatGravatar Benoit Jacob2009-05-07
|
* CREDIT Hauke Heibel, more std::vector::insert fixesGravatar Benoit Jacob2009-05-07
|
* fix the 4x4 inverse -- unit test passes againGravatar Benoit Jacob2009-04-14
|
* Add COMPONENT DevelGravatar Laurent Montel2009-02-23
|
* documentation update/improvementGravatar Benoit Jacob2009-01-26
|
* compute the rank on the fly rather than at the end, and stop earlyGravatar Benoit Jacob2009-01-26
| | | | in the case of non-full rank (so big optimization in case the rank is low)
* * mark Geometry as experimentalGravatar Benoit Jacob2009-01-26
| | | | | | | * install QtAlignedMalloc * finish the renaming Regression->LeastSquares * install LeastSquares directory (!!!) * misc dox fixes
* * solveTriangularInPlace(): take a const ref and const_cast it, to allow ↵Gravatar Benoit Jacob2009-01-25
| | | | | | | passing temporary xprs. * improvements, simplifications in LU::solve() * remove remnant of old norm2()
* Optimization in LU::solve: when rows<=cols, no need to compute the L matrixGravatar Benoit Jacob2009-01-25
| | | | | | | Remove matrixL() and matrixU() methods: they were tricky, returning a Part, and matrixL() was useless for non-square LU. Also they were untested. This is the occasion to simplify the docs (class_LU.cpp) removing the most confusing part. I think that it's better to let the user do his own cooking with Part's.
* fix bug in the computation of rankGravatar Benoit Jacob2009-01-20
| | | | very difficult to catch in unit-tests because this is very noisy
* * the 4th template param of Matrix is now Options. One bit for storageGravatar Benoit Jacob2009-01-04
| | | | | | | | | | | | | | | | order, one bit for enabling/disabling auto-alignment. If you want to disable, do: Matrix<float,4,1,Matrix_DontAlign> The Matrix_ prefix is the only way I can see to avoid ambiguity/pollution. The old RowMajor, ColMajor constants are deprecated, remain for now. * this prompted several improvements in matrix_storage. ei_aligned_array renamed to ei_matrix_array and moved there. The %16==0 tests are now much more centralized in 1 place there. * unalignedassert test: updated * update FindEigen2.cmake from KDElibs * determinant test: use VERIFY_IS_APPROX to fix false positives; add testing of 1 big matrix
* * In LU solvers: no need anymore to use row-major matricesGravatar Benoit Jacob2009-01-03
| | | | | | | | * Matrix: always inherit WithAlignedOperatorNew, regardless of vectorization or not * rename ei_alloc_stack to ei_aligned_stack_alloc * mixingtypes test: disable vectorization as SSE intrinsics don't allow mixing types and we just get compile errors there.
* * the Upper->UpperTriangular changeGravatar Benoit Jacob2008-12-20
| | | | * finally get ei_add_test right
* * forgot to svn add 2 filesGravatar Benoit Jacob2008-12-18
| | | | * idea of Keir Mierle: make the static assert error msgs UPPERCASE
* * fix in IO.h, a useless copy was made because of assignment fromGravatar Benoit Jacob2008-12-18
| | | | | | | | | | | | | | | Derived to MatrixBase. * the optimization of eval() for Matrix now consists in a partial specialization of ei_eval, which returns a reference type for Matrix. No overriding of eval() in Matrix anymore. Consequence: careful, ei_eval is no longer guaranteed to give a plain matrix type! For that, use ei_plain_matrix_type, or the PlainMatrixType typedef. * so lots of changes to adapt to that everywhere. Hope this doesn't break (too much) MSVC compilation. * add code examples for the new image() stuff. * lower a bit the precision for floats in the unit tests as we were already doing some workarounds in inverse.cpp and we got some failed tests.
* LU class:Gravatar Benoit Jacob2008-12-17
| | | | | | * add image() and computeImage() methods, with unit test * fix a mistake in the definition of KernelResultType * fix and improve comments
* * replace postfix ++ by prefix ++ wherever that makes sense in Eigen/Gravatar Benoit Jacob2008-12-17
| | | | | * fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated" warning which I haven't looked much into
* * 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
|
* * sparse LU: add extraction of L,U,P, and Q, as well as determinantGravatar Gael Guennebaud2008-10-20
| | | | | for both backends. * extended a bit the sparse unit tests
* Big API change in Cholesky module:Gravatar Gael Guennebaud2008-10-13
| | | | | | | | | | | | | | | | * rename Cholesky to LLT * rename CholeskyWithoutSquareRoot to LDLT * rename MatrixBase::cholesky() to llt() * rename MatrixBase::choleskyNoSqrt() to ldlt() * make {LLT,LDLT}::solve() API consistent with other modules Note that we are going to keep a source compatibility untill the next beta release. E.g., the "old" Cholesky* classes, etc are still available for some time. To be clear, Eigen beta2 should be (hopefully) source compatible with beta1, and so beta2 will contain all the deprecated API of beta1. Those features marked as deprecated will be removed in beta3 (or in the final 2.0 if there is no beta 3 !). Also includes various updated in sparse Cholesky.
* compilation fixes with MSVCGravatar Gael Guennebaud2008-09-03
|
* * Add Hyperplane::transform(Matrix/Transform)Gravatar Gael Guennebaud2008-08-31
| | | | | * Fix compilations with gcc 3.4, ICC and doxygen * Fix krazy directives (hopefully)
* * 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
* Various compilation fixes for MSVC 9. All tests compile but someGravatar Gael Guennebaud2008-08-19
| | | | still fail at runtime in ei_aligned_free() (even without vectorization).
* * revert the previous interface change in solveTriangular (pointer vs reference)Gravatar Gael Guennebaud2008-08-18
| | | | | | | | | * remove the cast operators in the Geometry module: they are replaced by constructors and new operator= in Matrix * extended the operations supported by Rotation2D * rewrite in solveTriangular: - merge the Upper and Lower specializations - big optimization of the path for row-major triangular matrices
* change solveTriangularInPlace() to take a pointer as input (as discussed on ↵Gravatar Gael Guennebaud2008-08-12
| | | | | | IRC). extended the documentation of the triangular solver.
* 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 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.
* * 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
* 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.
* 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
* * 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.
* * 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
* the big Array/Cwise rework as discussed on the mailing list. The new APIGravatar Benoit Jacob2008-07-08
| | | | can be seen in Eigen/src/Core/Cwise.h.
* 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...
* * Block: row and column expressions in the inner directionGravatar Benoit Jacob2008-06-16
| | | | | | | | | now have the Like1D flag. * Big renaming: packetCoeff ---> packet VectorizableBit ---> PacketAccessBit Like1DArrayBit ---> LinearAccessBit
* 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.
* - 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())
* 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