Stewart, G. W.The Gram--Schmidt algorithm is a widely used method for orthogonalizing a sequence of vectors. It comes in two forms: classical Gram--Schmidt and modified Gram--Schmidt, each of whose operations can be ordered in different ways. This expository paper gives a systematic treatment of this confusing variety of algorithms. It also treats the numerical issue of loss of orthogonality and reorthogonalization as well as the implementation of column pivoting.en-USThe Gram-Schmidt Algorithm and Its VariationsTechnical Report