El principal caballo de trabajo detrás del cálculo de la SVD es el algoritmo QR. Después de haber dicho que hay muchos tipos diferentes de algoritmos para calcular la descomposición de valor singular de un genérico $M$a$N$ matriz $A$. Un gran esquemática sobre el tema disponible aquí (a partir de la documentación de Intel MKL) es la siguiente:
Como se puede ver, dependiendo de su caso de uso existen diferentes enfoques (la rutina de las convenciones de nomenclatura se puede encontrar aquí). Eso es porque, por ejemplo, hay la matriz de las formas, donde un padre de Familia de reducción puede ser más caro que una rotación de Givens (a nombre de dos "obvio" que la manera de llegar QR). Un estándar de referencia en la materia es Golub y Van Loan de la Matriz de Cálculos (me gustaría sugerir el uso de al menos la 3ra edición). También he encontrado Å. Björck de Métodos Numéricos para Problemas de mínimos Cuadrados muy buen recurso en la materia; mientras que la enfermedad vesicular porcina no es el enfoque principal del libro que ayuda a contextualizar el uso.
Si tengo que darte un consejo general en la materia es no tratar de escribir su propia enfermedad vesicular porcina algoritmos a menos que usted se haya tomado un par de clases de Álgebra Lineal Numérica ya y usted sabe lo que está haciendo. Sé que suena ilógico pero en realidad, no como una tonelada de cosas que pueden salir mal y que acabar con (en el mejor), sub-óptima de las implementaciones (si no mal). Hay algunos muy buenos gratis suites en la materia (por ejemplo. Eigen, Armadillo y Trilinos para nombrar unos pocos.)