QR Decomposition via Gram-Schmidt