Changes in Development Version
- EPS: reintroduce support for computing left eigenvectors, see EPSSetTwoSided().
- PEP: enable JD solver in real arithmetic.
- PEP: spectrum slicing can now be used with non-hyperbolic problems.
- NEP: support for automatic determination of singularities in NLEIGS with the AAA algorithm.
- Enable compilation with non-GNU compilers in Windows plaforms.
- Added support for DESTDIR in prefix install.
Changes in Version 3.10
- NEP: add support for deflation in SLP, RII and NArnoldi solvers.
- FN: improved matrix function evaluation of Phi functions.
- Interface changes: PEPLinearSetCompanionForm has been deprecated, use PEPLinearSetLinearization instead.
Changes in Version 3.9
- PEP: add spectrum slicing for Hermitian quadratic eigenvalue problems via STOAR.
- PEP: add support for non-monomial bases in JD.
- BV: add BVTENSOR to represent subspace bases with compact representation V = (I ⊗ U) S.
- BV: improved implementation of block orthogonalization, including TSQR and SVQB.
- BV: add BVGetSplit() operation to split a given BV object in two.
Changes in Version 3.8
- Released under 2-clause BSD license.
- New solver class LME for linear matrix equations (such as Lyapunov or Sylvester)
whose solution has low rank.
- NEP: added specific suport for rational eigenvalue problems with NEPSetProblemType().
- Added nonlinear inverse iteration as an option of EPSPOWER.
- Added a preliminary implementation of polynomial filters in STFILTER to compute
interior eigenvalues of symmetric problems without factorizing a matrix.
- SVD: add wrapper to PRIMME SVD solver.
- Improved evaluation of matrix functions, both in FN and MFN.
- GPU support improved in all solver classes.
- Simplified Fortran usage as in PETSc.
- Interface changes: DSNormalize has been removed; NEPInterpolSetDegree has been
renamed to NEPInterpolSetInterpolation, and takes an additional argument.
Changes in Version 3.7
- NEP: new solver 'nleigs' that implements a (rational) Krylov method operating
on a companion-type linearization of a rational interpolant of the nonlinear function.
- PEP: the 'jd' solver can now compute more than one eigenpair.
- MFN: added a new solver 'krylov' that works for different functions,
not only the exponential. The solver available in previous versions
has been renamed to 'expokit'.
- EPS: in spectrum slicing in multi-communicator mode now it is possible to
update the problem matrices directly on the sub-communicators.
- EPS: the contour integral solver now provides Chebyshev quadrature rule and
Hankel extraction; all options are documented in STR-11.
- Now most solvers allow a user-defined criterion to stop iterating based on a
- Optimized solution of linear systems in Newton refinement for PEP and NEP.
- Added download option for most external packages.
- GPU support updated to use VECCUDA instead of VECCUSP, now including complex scalars.
- Interface changes: EPS_CONV_EIG has been renamed to EPS_CONV_REL;
BVAXPY has been removed, use BVMult instead;
BVSetRandom no longer takes a PetscRandom argument, use BVSetRandomContext instead.
Changes in Version 3.6
- New EPS solver: locally optimal block preconditioned conjugate gradient
- New PEP solvers: Jacobi-Davidson (JD), and symmetric TOAR (STOAR).
- New NEP solver: contour integral spectrum slice (CISS).
- Improved BLOPEX interface by adding hard locking. Now the user can specify
the block size.
- Spectrum slicing in EPS can now be run in multi-communicator mode, where
each process group computes a sub-interval.
- Added functions and command-line options to view the computed solution
after solve, e.g. -eps_view_vectors binary:myvecs.bin
- The MFN solver class now takes an FN object to define the function.
The functionality for computing functions of small, dense matrices has
been moved from DS to FN. MFNSetScaleFactor has been removed, now this
scale factor must be specified in FN.
- FN now allows the definition of functions by combining two other functions.
- Added two new RG regions: "ring" a stripe along an
ellipse with optional start and end angles; "polygon" an
arbitrary polygon made up of a list of vertices.
- User makefiles must now include
- Interface changes: EPSComputeRelativeError and EPSComputeResidualNorm have
been deprecated (use EPSComputeError instead); the same for PEP, NEP and SVD;
PEPSetScale now allows passing two Vecs for diagonal scaling;
XXXPrintSolution has been replaced with XXXErrorView;
STGetOperationCounters has been removed, its functionality is available
via the log summary and with KSPGetTotalIterations;
BVGetVec has been renamed to BVCreateVec;
the interface for defining FN functions of rational type has changed;
BVSetOrthogonalization takes one more argument.
Changes in Version 3.5
A new solver class PEP for polynomial eigenvalue problems has been added.
It replaces the former QEP class, that has been removed.
PEP contains a new solver TOAR that can handle polynomials of arbitrary
degree. Q-Lanczos has been removed since it did not have guaranteed stability.
New NEP solver: polynomial interpolation using PEP.
Added Newton iterative refinement in both PEP and NEP.
A new auxiliary class RG allows the user to define a region in the complex plane.
This can be used for filtering out unwanted eigenvalues in EPS and PEP.
The auxiliary object IP has been removed and a new object BV has been
added that subsumes its functionality.
Support for requesting left eigenvectors has been removed, since none of the
solvers were computing them internally.
The STFOLD spectral transformation has been removed. Example ex24.c reproduces
Interface changes: SVDSetTransposeMode has been renamed to SVDSetImplicitTranspose;
in STSHIFT the sign of sigma is the opposite to previous versions;
EPSJDSetBOrth now takes a boolean argument instead of an enum.
Changes in Version 3.4
Added new class of solvers NEP for the nonlinear eigenvalue problem.
Added new class of solvers MFN for computing the action of a matrix
function on a vector.
New EPS solver: Contour integral spectrum slice (CISS). Allows to compute
all eigenvalues inside a region.
New QEP solver: Q-Lanczos is a specialized variant of Q-Arnoldi for
problems with symmetric matrices.
Added support for shift-and-invert in QEP.
Added a new auxiliary class FN: Mathematical Function, to be used in
the definition of nonlinear eigenproblems.
Added interface to external solver FEAST.
Changed options -xxx_monitor_draw to -xxx_monitor_lg, and similarly for
Changes in Version 3.3
New EPS solver: Rayleigh quotient conjugate gradient (RQCG).
This is the first CG-type eigensolver in SLEPc. It can be used for computing
smallest eigenvalues of symmetric-definite matrix pairs without inverting
any matrix (a preconditioner can be used instead).
Added a customizable parameter to specify how to restart in Krylov-Schur, see
Tunning this parameter may speed up convergence significantly in some cases.
Added support for generalized symmetric-indefinite eigenproblems in
Krylov-Schur and the Davidson solvers.
To use this, set the problem type to EPS_GHIEP.
New variant of Generalized Davidson for generalized eigenproblems that
expands the subspace with two vectors (GD2). It can be activated with
Added experimental support for arbitrary selection of eigenpairs, where the
solver chooses the most wanted ones based on a user-defined function of
the eigenvectors rather than simply sorting the eigenvalues.
Added a new auxiliary class DS: Direct Solver (or Dense System), which is
intended for developers rather than normal users.
Changes in Version 3.2
Computational intervals for symmetric eigenproblems, that activate a spectrum slicing mechanism to obtain all eigenvalues in a given interval, see EPSSetInterval.
Partial support (experimental) for GPU computing via PETSc's VECCUSP and MATAIJCUSP.
Improved performance and robustness of GD and JD solvers in (generalized) Hermitian problems.
Performance improvement of solvers with explicit matrix such as SVDCYCLIC and QEPLINEAR
(now use matrix preallocation).
Added Matlab interface.
Added support for parallel builds with CMake.
Added support for quad precision (configure PETSc --with-precision=__float128 with gcc-4.6 or later).
Interface changes: now all XXXDestroy() routines take a pointer to the object.
Changes in Version 3.1
New EPS solvers: Generalized Davidson (GD) and Jacobi-Davidson (JD). These are the first
eigensolvers in SLEPc that belong to the class of preconditioned eigensolvers.
Added a new instance of ST called STPRECOND. This is not really a spectral transformation
but rather a convenient way of handling the preconditioners in the new eigensolvers.
Added a new class QEP for solving quadratic eigenvalue problems. Currently, it contains
two solvers: the Q-Arnoldi method and another one that provides a linearization of the
problem and then invokes an eigensolver from EPS.
Added support for balancing of non-Hermitian problems, see EPSSetBalance.
Improved sorting of eigenvalues, now with the possibility of sorting with respect to
a target value. With shift-and-invert, now the ordering
of eigenvalues is the expected one, relative to the target.
Also added support for user-defined orderings. For details, see EPSSetWhichEigenpairs.
Added support for user-defined convergence tests, see EPSSetConvergenceTest.
Several predefined convergence criteria are available. Also, there is a new
flag for computing the true residual for the convergence test, see EPSSetTrueResidual.
Monitors have been reorganized and now more possibilities are available. See the Users
Manual for details.
Changes in user interface: EPSAttachDeflationSpace has been renamed to EPSSetDeflationSpace,
EPSSetLeftVectorsWanted replaces EPSSetClass for requesting left eigenvectors;
Change in arguments: EPSSetDeflationSpace; Deprecated function: EPSSetInitialVector,
replaced by EPSSetInitialSpace; STSINV has been renamed to STSINVERT.
Changes in Version 3.0.0
Released under GNU LGPL license.
Improved support for the case that many eigenpairs are to be
computed. This is especially so in the default eigensolver (Krylov-Schur)
for symmetric problems, as well as for SVD computations. The user
can control the behaviour of the solver with a new parameter, mpd
Support for harmonic projection in the default eigensolver (Krylov-Schur),
see EPSSetExtraction. This can be useful for computing interior or
rightmost eigenvalues without the need of a spectral transformation.
Memory usage has been optimized in most solvers. In some cases,
memory requirements have been halved with respect to the previous
In the spectral transformations (ST) the linear solver used internally
has been changed to a direct solver by default. The user can still
employ an iterative linear solver by setting the appropriate options.
Added better support for Fortran 90.
Improved support for 'make install', see the Users Manual for details.
Changes in Version 2.3.3
A new solver class, SVD, has been introduced for computing the singular
value decomposition of a rectangular matrix. The structure of this new
type is very similar to that of EPS, and it simplifies the computation
of singular values and vectors. A complete chapter in the users manual
is devoted to SVD.
Better support for generalized problems. Eigenvector purification has
been added to improve accuracy in the case of generalized eigenproblems
with singular B. Also, a new problem type (EPS_PGNHEP) has been added
for better addressing generalized problems in which A is non-Hermitian
but B is Hermitian and positive definite.
Now 'make install' is available thus facilitating system-wide installation.
Changes in Version 2.3.2
A new 'krylovschur' eigensolver has been added, that implements the
Krylov-Schur method. This method is related to the Arnoldi and Lanczos
algorithms, but incorporates a new restarting scheme that makes it
competitive with respect to implicit restart. This eigensolver is now
the default for both symmetric and non-symmetric problems.
A new wrapper has been developed to interface with the PRIMME library.
This library provides Davidson-type eigensolvers.
The 'lanczos' solver has been improved, in particular, the different
reorthogonalization strategies are now more robust.
Now the 'arnoldi' eigensolver supports the computation of eigenvalues
other than those of largest magnitude.
EPSGetLinearIterations has been replaced with EPSGetOperationCounters,
providing more statistics about the solution process.
EPSGetIterationNumber now returns the number corresponding to outer
The 'lobpcg' wrapper has been renamed to 'blopex'.
The 'planso' wrapper has been removed since PLANSO is no longer being
Changes in Version 2.3.1
New variant of the Arnoldi method added to the 'arnoldi' eigensolver
(with delayed reorthogonalization, see EPSArnoldiSetDelayed).
Several optimizations for improving performance and scalability, in particular
the orthogonalization steps.
Changes in Version 2.3.0
New 'lanczos' eigensolver, an explicitly restarted version of the Lanczos method
for symmetric eigenproblems. Allows the user to choose among 5 reorthogonalization
New spectrum folding spectral transformation.
New configuration system, similar to PETSc's configure.py.
New interface to an external eigensolver: LOBPCG implemented in Hypre.
Added graphical convergence monitor (with -eps_xmonitor).
Improvement of Arnoldi solver in terms of efficiency and robustness.
Now the 'lapack' solver uses specific Lapack routines for symmetric and generalized problems.
Bug fix in the ARPACK interface.
Changes in Version 2.2.1
The 'power' eigensolver has been replaced by a simpler implementation.
The 'rqi' eigensolver has been removed. Now the Rayleigh Quotient Iteration is embedded in the 'power' method.
The 'subspace' eigensolver has been rewritten. Now it follows the SRRIT implementation, which is much faster than the old one.
The 'arnoldi' eigensolver has been re-implemented as well. The new implementation is much more robust and efficient.
A new Spectral Tranformation (ST) has been added: the generalized Cayley transform.
Support for user-provided deflation subspaces has been added (see EPSAttachDeflationSpace).
Support for preservation of symmetry in eigensolvers. For this feature, the user must explicitly call EPSSetProblemType in symmetric problems.
The two types of monitors (error estimates and values) have been merged in a single one.
New function EPSGetInvariantSubspace.
Better support for spectrum slicing in 'blzpack'.
Changes in Version 2.2.0
EPSSolve does not return the number of iterations. Use EPSGetIterationNumber for this purpose.
EPSGetSolution has been replaced by EPSGetEigenpair with a cleaner interface.
EPSComputeError has been replaced by EPSComputeRelativeError and EPSComputeResidualNorm with better error computing for zero eigenvalues. These functions now are oriented to single eigenpairs, as well as EPSGetErrorEstimate.
The possibilities of EPSSetWhichEigenpairs have been reduced and now are more coherent across problem types.
Removed STNONE spectral transformation. The default of STSHIFT with 0 shift is equivalent.
Added STSinvertSetMatStructure to optimize performance of MatAXPY in shift-and-invert transformation.
Classical and modified Gram-Schmidt orthogonalization use iterative refinement, with user options for parameter adjustment.
Changes in Version 2.1.5
Added call to MatGetInertia in BLZPACK interface.