Gram-Schmidt orthogonalization process