# KSPIBCGS
Implements the IBiCGStab (Improved Stabilized version of BiConjugate Gradient) method in an alternative form to have only a single global reduction operation instead of the usual 3 (or 4) 


## Notes
Supports left and right preconditioning

See `KSPBCGSL` for additional stabilization

Unlike the Bi-CG-stab algorithm, this requires one multiplication be the transpose of the operator
before the iteration starts.

The paper has two errors in the algorithm presented, they are fixed in the code in `KSPSolve_IBCGS()`

For maximum reduction in the number of global reduction operations, this solver should be used with
`KSPSetLagNorm()`.

This is not supported for complex numbers.


## Reference
The Improved BiCGStab Method for Large and Sparse Unsymmetric Linear Systems on Parallel Distributed Memory
Architectures. L. T. Yang and R. Brent, Proceedings of the Fifth International Conference on Algorithms and
Architectures for Parallel Processing, 2002, IEEE.


## See Also
 [](chapter_ksp), `KSPCreate()`, `KSPSetType()`, `KSPType`, `KSP`, `KSPBICG`, `KSPBCGSL`, `KSPIBCGS`, `KSPSetLagNorm()`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/impls/ibcgs/ibcgs.c.html#KSPIBCGS">src/ksp/ksp/impls/ibcgs/ibcgs.c</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/ksp/impls/ibcgs/ibcgs.c)


[Index of all KSP routines](index.md)  
[Table of Contents for all manual pages](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
