A rotina QR do LAPACK armazena Q como refletores domésticos. Ele escala o vetor de reflexão com , para que o primeiro elemento do resultado se torne , para que não precise ser armazenado. E ele armazena um vetor separado , que contém os fatores de escala necessários. Portanto, uma matriz refletora é assim:
onde não é normalizado. Enquanto, nos livros didáticos, a matriz refletora é
onde é normalizado.
Por que o LAPACK dimensiona com , em vez de normalizá-lo?
O armazenamento necessário é o mesmo (em vez de , precisa ser armazenado) e, em seguida, a aplicação de pode ser feita mais rapidamente, pois não há necessidade de multiplicar com (a multiplicação com na versão do livro pode ser otimizada, se, em vez da normalização simples, for dimensionado por ).
(O motivo da minha pergunta é que estou escrevendo uma rotina QR e SVD e gostaria de saber o motivo dessa decisão, se preciso segui-la ou não)