The QR decomposition of a square matrix A factors A as the product of an orthogonal matrix Q and an upper triangular matrix R. An orthogonal matrix is a matrix whose columns are mutually orthogonal unit vectors and so satisfies , where is an identity matrix, and an upper triangular matrix is a matrix whose entries below the main diagonal are all zero. The matrix Q is the result of performing the Gram-Schmidt process on the columns of A. The Mathematica function QRDecomposition[a] accomplishes this factorization, producing the list .