Good Afternoon,
I am implementing the Golub-Reinsch SVD algorithm and am having difficulty with a boundary case
Given a bidiagonal matrix of the form: $$ \begin{bmatrix} b11 & b12 & 0 \\ 0 & 0 & b23 \\ 0 & 0 & b33 \\ \end{bmatrix} $$
A key step in the algorithm is detecting breaks along the diagonal. If this were a 4x4 matrix with the middle diagonal missing one applies givens rotations to zero out the row, decoupling the matrices. What I do not understand is what to do in the circumstance of the matrix describe above. Zeroing the bidiagonal in the second row is no issue: $$ \begin{bmatrix} b11 & b12 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & b33new \\ \end{bmatrix} $$
but then my implementation produces incorrect results upon convergence.
Per the references I am using, one need restore the upper quadrant to bidiagonality i.e: $$ \begin{bmatrix} b11 & b12 & 0 \\ 0 & bnew & 0 \\ 0 & 0 & somethinghere? \\ \end{bmatrix} $$
But am a bit out of my depths. Can someone provide insight or references?
TIA.