The latter is the LOBPCG method [@LOBPCG].

Quasi-Newton methods use the NLCG vector iterates to construct incrementally an approximation to the Hessian, thus accelerating NLCG [@Gill_Murray_Wright]. Similarly, if all the iterates of LOCG are considered, certain forms of quasi-Newton methods are equivalent to unrestarted Lanczos. With thick or implicit restarting, Lanczos loses this single important direction ($u^{(m-1)}$). Therefore, the appropriate way to restart Lanczos or Lanczos-type methods is by subspace acceleration of the LOCG recurrence [@CM_SR_ED_92a; @AS_YS_98]. When looking for $nev$ eigenvalues, the idea can be combined with thick restarting so that the eigensolver search basis is restarted with an orthonormal basis for the following vectors [@AS_YS_98; @JDQMR_One]: $$\begin{aligned}
\left[ 
 u_1^{(m)}, u_2^{(m)}, \ldots , u_{nev}^{(m)}, u_1^{(m-1)}, \ldots ,u_k^{(m-1)}
\right].
  \label{eq:restartedV}\end{aligned}$$ An efficient implementation is possible at no additional cost to thick restarting, because all orthogonalization is performed on the small coefficient vectors of the Rayleigh-Ritz procedure [@AS_YS_98]. This technique consistently yields convergence which is almost indistinguishable from the unrestarted method. We see next how this scheme can help us approximate eigenvectors from within CG.

The eigCG method {#sec:ourmethod}
================

The idea is to use an eigenvector search space $V$ within the CG iteration, which is restarted through (\[eq:restartedV\]), but not 