ArnoldiMethod.jl Versions Save

The Arnoldi Method with Krylov-Schur restart, natively in Julia.

v0.3.5

3 months ago

ArnoldiMethod v0.3.5

Diff since v0.3.4

  • ArnoldiMethod.jl now exports partialschur! and ArnoldiWorkspace, which can be used to pre-allocate (custom) matrices. Also it can be used to run the algorithm from an existing partial Schur decomposition.

Merged pull requests:

  • Support starting vec (#141) (@haampie)
  • Add Apple Silicon to CI (#142) (@ViralBShah)
  • Allow passing an initial partial Schur decomposition (#143) (@haampie)

Closed issues:

  • Feature request: Allow an initial start-vector (#91)

v0.4.0

3 months ago

ArnoldiMethod v0.4.0

Diff since v0.3.4

  • BREAKING: The target structs LM, SR, LR, SI, LI are no longer exported. You have to import them explicitly: using ArnoldiMethod: LM. But easier is to update your code from structs LM() to symbols :LM (which requires at least v0.3).

  • ArnoldiMethod.jl now exports partialschur! and ArnoldiWorkspace, which can be used to pre-allocate (custom) matrices. Also it can be used to run the algorithm from an existing partial Schur decomposition.

Merged pull requests:

  • Support starting vec (#141) (@haampie)
  • Add Apple Silicon to CI (#142) (@ViralBShah)
  • Allow passing an initial partial Schur decomposition (#143) (@haampie)
  • do not export LM, SR, LR, SI, LI (#144) (@haampie)

Closed issues:

  • Feature request: Allow an initial start-vector (#91)

v0.3.4

3 months ago

ArnoldiMethod v0.3.4

Diff since v0.3.3

This release implements purging of converged, unwanted Ritz values. This should improve stability of the Krylov-Schur restart, as previously converged but unwanted Ritz values caused tiny residuals, which appear in a vector we need to compute a reflector for, leading to instabilities. For additional stability, we also implement the initial rotations in the Krylov-Schur restart through Given's rotations instead of Householder reflections. The square H matrix is brought back with Householder reflections afterwards.

v0.3.3

3 months ago

ArnoldiMethod v0.3.3

Diff since v0.3.2

Improve stability of the dense eigensolver: replace "perfect" Wilkinson shift for 2x2 blocks with a single stable and hand-crafted rotation.

v0.3.2

3 months ago

Fix a bug where ArnoldiMethod.jl would accidentally use eps(typeof(tol)) in the stopping criterion instead of the matrix number type. So, with say BigFloat and tol = 1e-30 it would converge to 1e-16 accuracy instead of 1e-30.

v0.3.1

3 months ago

ArnoldiMethod v0.3.1

Diff since v0.3.0

Fixes the edge case of an all zeros matrix. Previous ArnoldiMethod.jl would not converge, and end up with NaNs, now it finds a proper eigenbasis. This edge case should help in general with robustness with repeated eigenvalues at exactly zero.

v0.3.0

3 months ago

ArnoldiMethod v0.3.0

Diff since v0.2.0

  • Fixed a bug where locking and purging destroyed the partial Schur decomposition, which was triggered in case of irregular convergence of eigenvalues closest to the target, typically seen in matrices with repeated eigenvalues close to the target.
  • Add support for :LM, :SR, :LR, :SI and :LI symbols for partialschur(..., which=...), as seen in Arpack.jl and KrylovKit.jl.
  • General maintenance of CI, docs and package structure.
  • Added CITATION.cff

v0.2.0

3 years ago

ArnoldiMethod v0.2.0

Diff since v0.1.0

Closed issues:

  • BigFloat matrix in partialschur() does not work (#94)

Merged pull requests:

  • BigFloat compatibility (#105) (@fgerick)

v0.1.0

3 years ago

ArnoldiMethod v0.1.0

Diff since v0.0.4

Closed issues:

  • Segmentation fault when asking for zero eigenvalues (#97)
  • Eigenvalues are sorted in Julia 1.2, breaking the tests here (#98)
  • UUID mismatch in Project.toml and JuliaRegistries/General Package.toml (#103)

Merged pull requests:

  • Fixed segmentation fault when eigen values are less than 1 (#100) (@krish8484)
  • Add compat for StaticArrays (#102) (@jaakkor2)

v0.0.4

5 years ago
  • Fixes a bug where the last eigenvalue listed in PartialSchur.eigenvalues was not the last converged eigenvalue, but simply the last Ritz value.
  • Fixes a bug where single shifts were used in the case of numerically repeated eigenvalues and the QR algorithm would stagnate
  • Fixes a bug where blocks with equal eigenvalues where swapped, resulting in a singular Sylvester equation and Inf's and NaN's in the Hessenberg matrix.