Fixed C++20 compiler errors, thanks to Prof. Ripley.
Fixed BLAS/LAPACK calls, thanks to Prof. Ripley.
svds()
now supports implicit centering and scaling of the matrix
via the center
and scale
parameters in the opts
argument, suggested by @robmaz
(#73 of Spectra).
Updated Spectra to v0.8.1.
Added support for new matrix types dsCMatrix and dsRMatrix to handle sparse and symmetric matrices, contributed by @flying-sheep (#16).
eigs()
now detects the symmetry of dgRMatrix matrices.
Improved the documentation about the relationship between SVD and eigen decomposition for symmetric matrices, thanks to @alexpghayes (#17).
(Internal) Replaced the deprecated Eigen::MappedSparseMatrix
class in the C++ code.
Updated Spectra to v0.8.0.
New parameter opts$initvec
in eigs()
and eigs_sym()
to allow users supplying the initial vector for the algorithm.
Updated Spectra to v0.6.2 that fixes regressions in v0.6.1 on some edge cases.
Using prettydoc to format vignette.
Updated Spectra to v0.6.1 that improves numerical accuracy of eigen-solvers.
Registered native routines per CRAN's policy.
Now svds()
supports user-defined implicit matrix that is
specified by two functions, A
and Atrans
, which
calculate the matrix multiplication and transpose multiplication
respectively.
Added a package vignette.
New package to supersede rARPACK to avoid name confusion.
Imported from rARPACK 0.10-0.
Improved numerical stability.
Fixed convergence failure for matrices that have repeated eigenvalues.
Updated the backend Spectra library, which fixed the compatibility with Eigen >= 3.2.6.
Fixed a bug that causes the algorithm not converging on some matrices.
Fixed a compilation problem on Solaris.
The backend program is now changed from ARPACK to Spectra, which brings cleaner code and better performance.
eigs_sym()
now accepts more matrix types.
Added a C interface for other packages to link to.
Support for implicit matrix, contributed by Jiali Mei.
User can supply a function FUN
rather than an explicit
matrix to eigs()
, and the eigenvalues/eigenvectors of this
operator will be computed. FUN(x, args)
must return a vector
of the same length as x
.
eigs()
will test the symmetry of matrix before actual
computation, since symmetric matrices can guarantee real
eigenvalues and eigenvectors, and the numerical result is more
stable.
C++ code of svds()
is completely rewritten. Now it is more
readable and easier to maintain.
Fix a bug possibly coming from ARPACK, which sometimes gives incorrect result of complex eigenvectors.
Avoid using a C random number generator.
Add support for new matrix types: dgeMatrix and dgRMatrix.
eigs()
now allows a full Eigen Decomposition, meaning that
all the eigenvalues are calculated. In this case eigs()
is
simply a wrapper of eigen()
, and with a warning issued.
Ditto for svds()
.
Rewrite C++ code using classes and templates.
Fix errors in checking the values of k
and ncv
.
Add svds()
function to calculate truncated SVD.
Now sort eigenvalues in decreasing order.
Rename eigs.sym()
to eigs_sym()
to avoid confusion.
Fix a matrix out-of-bound error.
Implement shift-and-invert mode for all supported eigen problems.
Update arpack-ng to 3.1.4.
Now eigs()
supports real symmetric matrices.
Now eigs()
supports sparse real nonsymmetric matrices of the
class dgCMatrix, defined in the Matrix package.
Initial version. For now eigs()
supports dense real
nonsymmetric matrices.