| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
| |
- R-SVD preconditioning now done with meta selectors to avoid compiling useless code
- SVD options now honored, with options to hint "at least as many rows as cols" etc...
- fix compilation in bad cases (rectangular and fixed-size)
- the check for termination is now done on the fly, no more goto (should have done that earlier!)
|
|
|
|
|
| |
* move the makeJacobi and make_givens_* to PlanarRotation
* rename applyJacobi* => apply*
|
|\ |
|
| |
| |
| |
| | |
any rectangular matrix size by reducing to the smaller of the two dimensions (which is also an optimization)
|
|/ |
|
|
|
|
| |
some convenient features (transpose, adjoint, product)
|
|
|
|
|
|
|
|
|
|
|
|
| |
- support complex numbers
- big rewrite of the 2x2 kernel, much more robust
* Jacobi:
- fix weirdness in initial design, e.g. applyJacobiOnTheRight actually did the inverse transformation
- fully support complex numbers
- fix logic to decide whether to vectorize
- remove several clumsy methods
fix for complex numbers
|
|
|
|
| |
(implements feature request #18)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
* normalize left Jacobi rotations to avoid having to swap rows
* set precision to 2*machine_epsilon instead of machine_epsilon, we lose 1 bit of precision
but gain between 10% and 100% speed, plus reduce the risk that some day we hit a bad matrix
where it's impossible to approach machine precision
|
|
|
|
|
|
|
| |
it turns out to be better to repeat the jacobi steps on a given (p,q) pair until it
is diagonal to machine precision, before going to the next (p,q) pair. it's also
an optimization as experiments show that in a majority of cases this allows to find out
that the (p,q) pair is already diagonal to machine precision.
|
|
|
|
|
|
|
|
|
|
| |
to guarantee the precision of the output, which is very valuable.
Here, we guarantee that the diagonal matrix returned by the SVD is
actually diagonal, to machine precision.
Performance isn't bad at all at 50% of the current householder SVD
performance for a 200x200 matrix (no vectorization) and we have
lots of room for improvement.
|
| |
|
|
|
|
|
| |
* add Jacobi (Hestenes) SVD decomposition for square matrices
* add function for trivial Householder
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
this is still not Eigen style code but at least it works for
n>m and it is more accurate than the JAMA based version. (I needed
it now, this is why I did that)
|
| |
|
|\ |
|
| |
| |
| |
| | |
it never made very precise sense. but now does it still make any?
|
| | |
|
|/
|
|
|
|
| |
Added default ctor and public compute method as
well as safe-guards against uninitialized usage.
Added unit tests for the safe-guards.
|
| |
|
|
|
|
|
|
| |
add convenience functions in Transform
reimplement Transform::rotation() to use that
add unit-test
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
* fix some "unused variable" warnings in the tests; there remains a libstdc++ "deprecated"
warning which I haven't looked much into
|
|
|
|
| |
of the stable API yet and a couple of other minor doc updates...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
| |
=> row-major rhs are now evaluated to a column-major
temporary before the computations.
Add solveInPlace in Cholesky*
|
|
|
|
| |
stable as LU with full pivoting)
|
| |
|
|
- the decompostion code has been adfapted from JAMA
- handles non square matrices of size MxN with M>=N
- does not work for complex matrices
- includes a solver where the parts corresponding to zero singular values are set to zero
|