The biconjugate gradient stabilized (BCGSTAB) method was developed to solve nonsymmetric linear systems while avoiding the often irregular convergence patterns of the conjugate gradient squared method (van der Vorst 1992). Instead of computing the conjugate gradient squared method sequence , BCGSTAB computes where is an th degree polynomial describing a steepest descent update.
BCGSTAB often converges about as fast as the conjugate gradient squared method (CGS), sometimes faster and sometimes not. CGS can be viewed as a method in which the biconjugate gradient method (BCG) "contraction" operator is applied twice. BCGSTAB can be interpreted as the product of BCG and repeated application of the generalized minimal residual method. At least locally, a residual vector is minimized, which leads to a considerably smoother convergence behavior. On the other hand, if the local generalized minimal residual method step stagnates, then the Krylov subspace is not expanded, and BCGSTAB will break down. This is a breakdown situation that can occur in addition to the other breakdown possibilities in the underlying BCG algorithm. This type of breakdown may be avoided by combining BCG with other methods, i.e., by selecting other values for in the algorithm. One such alternative is BCGSTAB2 (Gutknecht 1993). More general approaches have been suggested by Sleijpen and Fokkema (1993).
Note that BCGSTAB has two stopping tests: if the method has already converged at the first test on the norm of , the subsequent update would be numerically questionable. Additionally, stopping on the first test saves a few unnecessary operations, but this is of minor importance.
BCGSTAB requires two matrix-vector products and four inner products, i.e., two inner products more than the biconjugate gradient method or the conjugate gradient squared method (van der Vorst 2003).