| Classical Gram-Schmidt |
orthogonalize each column against original earlier columns |
poor when columns are nearly dependent; loses orthogonality |
teaching the connection between QR and orthogonalization |
| Modified Gram-Schmidt |
update remaining columns in place after each projection subtraction |
significantly better than classical; not backward stable |
cases where Q is needed explicitly column by column |
| Householder reflections |
one orthogonal reflection per column zeros all entries below the pivot |
backward stable — the gold standard |
dense matrices; default in numerical libraries |
| Givens rotations |
a plane rotation zeros one entry at a time |
backward stable, like Householder |
sparse matrices — preserves sparsity by acting locally |