aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/QR/ColPivHouseholderQR.h
Commit message (Collapse)AuthorAge
* Relax mixing-type constraints for binary coefficient-wise operators:Gravatar Gael Guennebaud2016-06-06
| | | | | | | | | | - Replace internal::scalar_product_traits<A,B> by Eigen::ScalarBinaryOpTraits<A,B,OP> - Remove the "functor_is_product_like" helper (was pretty ugly) - Currently, OP is not used, but it is available to the user for fine grained tuning - Currently, only the following operators have been generalized: *,/,+,-,=,*=,/=,+=,-= - TODO: generalize all other binray operators (comparisons,pow,etc.) - TODO: handle "scalar op array" operators (currently only * is handled) - TODO: move the handling of the "void" scalar type to ScalarBinaryOpTraits
* Nevermind.Gravatar Rasmus Munk Larsen2016-02-06
|
* Add my name to copyright notice in ColPivHouseholder.h, mostly for previous ↵Gravatar Rasmus Munk Larsen2016-02-06
| | | | work on stable norm downdate formula.
* Implement complete orthogonal decomposition in Eigen.Gravatar Rasmus Munk Larsen2016-02-06
|
* Fix bad line break. Don't repeat Kahan matrix test since it is deterministic.Gravatar Rasmus Munk Larsen2016-02-03
|
* Make the array of directly compute column norms a member to avoid allocation ↵Gravatar Rasmus Munk Larsen2016-02-03
| | | | in computeInPlace.
* Change Eigen's ColPivHouseholderQR to use the numerically stable norm ↵Gravatar Rasmus Munk Larsen2016-01-28
| | | | | | | | | | | | | | | | | | | | | | | | downdate formula from http://www.netlib.org/lapack/lawnspdf/lawn176.pdf, which has been used in LAPACK's xGEQPF and xGEQP3 since 2006. With the old formula, the code chooses the wrong pivots and fails to correctly determine rank on graded matrices. This change also adds additional checks for non-increasing diagonal in R11 to existing unit tests, and adds a new unit test with the Kahan matrix, which consistently fails for the original code. Benchmark timings on Intel(R) Xeon(R) CPU E5-1650 v3 @ 3.50GHz. Code compiled with AVX & FMA. I just ran on square matrices of 3 difference sizes. Benchmark Time(ns) CPU(ns) Iterations ------------------------------------------------------- Before: BM_EigencolPivQR/64 53677 53627 12890 BM_EigencolPivQR/512 15265408 15250784 46 BM_EigencolPivQR/4k 15403556228 15388788368 2 After (non-vectorized version): Benchmark Time(ns) CPU(ns) Iterations Degradation -------------------------------------------------------------------- BM_EigencolPivQR/64 63736 63669 10844 18.5% BM_EigencolPivQR/512 16052546 16037381 43 5.1% BM_EigencolPivQR/4k 15149263620 15132025316 2 -2.0% Performance-wise there seems to be a ~18.5% degradation for small (64x64) matrices, probably due to the cost of more O(min(m,n)^2) sqrt operations that are not needed for the unstable formula.
* Fix numerous doxygen shortcomings, and workaround some clang -Wdocumentation ↵Gravatar Gael Guennebaud2016-01-01
| | | | warnings
* Generalize matrix ctor and compute() method of dense decomposition to 1) ↵Gravatar Gael Guennebaud2015-09-07
| | | | limit temporaries, 2) forward expressions to nested decompositions, 3) fix ambiguous ctor instanciation for square decomposition
* bug #949: add static assertion for incompatible scalar types in dense ↵Gravatar Gael Guennebaud2015-03-13
| | | | end-user decompositions.
* Merged in chtz/eigen-indexconversion (pull request PR-92)Gravatar Gael Guennebaud2015-02-16
|\ | | | | | | | | | | | | | | | | | | | | | | bug #877, bug #572: Get rid of Index conversion warnings, summary of changes: - Introduce a global typedef Eigen::Index making Eigen::DenseIndex and AnyExpr<>::Index deprecated (default is std::ptrdiff_t). - Eigen::Index is used throughout the API to represent indices, offsets, and sizes. - Classes storing an array of indices uses the type StorageIndex to store them. This is a template parameter of the class. Default is int. - Methods that *explicitly* set or return an element of such an array take or return a StorageIndex type. In all other cases, the Index type is used.
* | bug #952: Missing \endcode made doxygen fail to build ColPivHouseholderQRGravatar Christoph Hertzberg2015-02-15
| |
| * Index refactoring: StorageIndex must be used for storage only (and locally ↵Gravatar Gael Guennebaud2015-02-13
| | | | | | | | when it make sense). In all other cases use the global Index type.
| * Merge Index-refactoring branch with default, fix PastixSupport, remove some ↵Gravatar Gael Guennebaud2015-02-13
| |\ | |/ |/| | | useless typedefs
* | bug #941: fix accuracy issue in ColPivHouseholderQR, do not stop ↵Gravatar Gael Guennebaud2015-01-30
| | | | | | | | decomposition on a small pivot
| * bug #877, bug #572: Introduce a global Index typedef. Rename Sparse*::Index ↵Gravatar Christoph Hertzberg2014-12-04
|/ | | | to StorageIndex, make Dense*::StorageIndex an alias to DenseIndex. Overall this commit gets rid of all Index conversion warnings.
* Make constructors explicit if they could lead to unintended implicit conversionGravatar Christoph Hertzberg2014-09-23
|
* Remove deprecated code not used by evaluatorsGravatar Gael Guennebaud2014-09-18
|
* merge default and evaluator branchesGravatar Gael Guennebaud2014-03-12
|\
* | Port QR module to Solve/InverseGravatar Gael Guennebaud2014-03-11
| |
| * Make pivoting HouseholderQR compatible with custom scalar typesGravatar Christoph Hertzberg2014-02-25
|/
* merge with default branchGravatar Gael Guennebaud2013-11-05
|\
* | Add a rank method with threshold control to JacobiSVD, and make solve uses ↵Gravatar Gael Guennebaud2013-11-01
| | | | | | | | it to return the minimal norm solution for rank-deficient problems
| * Disable some shortcuts with nvccGravatar Gael Guennebaud2013-07-31
|/
* Fix various scalar type conversion warnings.Gravatar Gael Guennebaud2013-07-12
|
* Fix HouseholderSequence::conjugate() and ::adjoint() and add respective unit ↵Gravatar Gael Guennebaud2013-06-17
| | | | tests.
* Fix bug #314: move remaining math functions from internal to numext namespaceGravatar Gael Guennebaud2013-06-10
|
* Fix bug #599: add missing documentation of some members in QR module.Gravatar Gael Guennebaud2013-06-10
|
* Add assertion on the input matrix size in factorizations relying on ↵Gravatar Gael Guennebaud2013-02-26
| | | | permutations of 32bits int
* Remove superfluous cast.Gravatar Gael Guennebaud2013-02-24
|
* Clarify the doc for column-pivoting QRGravatar Desire NUENTSA2013-02-21
|
* Add matrixR() to get the triangular factor from the Householder QRGravatar Desire NUENTSA2013-02-20
|
* Fix some implicit int64 to int conversion warnings. However, the real issueGravatar Gael Guennebaud2013-02-14
| | | | | | | is that PermutationMatrix mixes the type of the stored indices and the "Index" type used for the sizes, coeff indices, etc., which should be DenseIndex. (transplanted from 66cbfd4d39efbec240fe90b2dd77293e71f060e8 )
* remove dummy code in ColPivHouseholderQR::solveGravatar Gael Guennebaud2013-01-23
|
* Update SPQR module for Sparse LMGravatar Desire NUENTSA2012-11-21
|
* Fix bug #314:Gravatar Gael Guennebaud2012-11-06
| | | | | - remove most of the metaprogramming kung fu in MathFunctions.h (only keep functions that differs from the std) - remove the overloads for array expression that were in the std namespace
* Automatic relicensing to MPL2 using Keirs script. Manual fixup follows.Gravatar Benoit Jacob2012-07-13
|
* Get rid of include directives inside namespace blocks (bug #339).Gravatar Jitse Niesen2012-04-15
|
* protect calls to min and max with parentheses to make Eigen compatible with ↵Gravatar Gael Guennebaud2011-07-21
| | | | | | | default windows.h (transplanted from 49b6e9143e1d74441924c0c313536e263e12a55c )
* bug #271: fix copy/paste mistakes in docGravatar Gael Guennebaud2011-05-23
| | | | (transplanted from 145b9cad63101ee46924d446fa8b08ffb48c7f3a)
* clean a bit previous patch (ctor vs static_cast and a few bits)Gravatar Gael Guennebaud2011-05-23
|
* fix implicit scalar conversions (needed to support fancy scalar types, see ↵Gravatar David H. Bailey2011-05-23
| | | | bug #276)
* Make HouseholderSequence::setTrans() protected (cf. bug #50).Gravatar Jitse Niesen2011-01-06
| | | | Users can call .transpose() instead.
* fix HouseholderSequence API, bug #50:Gravatar Benoit Jacob2010-12-30
| | | | | | * remove ctors taking more than 2 ints * rename actualVectors to length * add length/shift/trans accessors/mutators
* bug #86 : use internal:: namespace instead of ei_ prefixGravatar Benoit Jacob2010-10-25
|
* Added more detailed docs to the QR decompositions classes.Gravatar Hauke Heibel2010-08-05
|
* Remove \nonstable yet. The stability rules for Eigen3 are much simpler:Gravatar Benoit Jacob2010-06-29
| | | | | - all what's not in unsupported/ is considered stable API (except internal stuff e.g. expression templates).
* email changeGravatar Gael Guennebaud2010-06-24
|
* clean old stuff used to support precompilation inside a binary libGravatar Gael Guennebaud2010-06-07
|
* Fixes the problem, described here:Gravatar Anton Gladky2010-05-28
| | | | http://listengine.tuxfamily.org/lists.tuxfamily.org/eigen/2010/05/msg00154.html