Hermitian banded eigendecompositions where T <: BlasFloat#185
Hermitian banded eigendecompositions where T <: BlasFloat#185MikaelSlevinsky wants to merge 2 commits intomasterfrom
Conversation
I dont't see the need for a
I agree with that statement. If you multiply givens rotations with complex arrays you can safe 1/4 of real multiplications, if one of the coefficients in How is the PR coordinated with #183? |
|
Rest assured it will be coordinated with #183. Probably we'll merge yours before this one. Please note this is a draft, a work in progress. |
Codecov Report
@@ Coverage Diff @@
## master #185 +/- ##
==========================================
- Coverage 71.83% 71.21% -0.63%
==========================================
Files 21 22 +1
Lines 2546 2710 +164
==========================================
+ Hits 1829 1930 +101
- Misses 717 780 +63
Continue to review full report at Codecov.
|
This draft PR adds Hermitian banded eigendecompositions based on tridiagonal reduction. It made me realize that
LinearAlgebrais missing a Hermitian tridiagonal type and parametric Givens rotations with different types for the sines and cosines: in the BLAS, a complex Givens rotation uses a real cosine. Having a finer grained parametrization of a Givens rotation inLinearAlgebrawould probably speed up their application. This proposal is a breaking change toLinearAlgebra, so I think that means if implemented it would only be available from Julia v2.RFC: it would be easy to destroy the
HermTridiagonaltype and preserve the outcomes of this PR. ProbablyHermTridiagonalbelongs inLinearAlgebra.Other improvements:
sbtrd!so that they can be pre-allocated rather than pushed.sbtrd!function doesn't default toWANTQ = true, unifying calls foreigvalsas well.eigen!andeigvals!are defined and keyword arguments may be passed so that one may ask for, e.g.eigvals(A, -2, 2), all eigenvalues of Symmetric/Hermitian banded A between -2 and 2. Also works with a unitrange.Todo: