I have a problem where I need to compute many times the SVD of a "quasi-diagonal" matrix.
What I call a quasi-diagonal matrix is a diagonal matrix, except its last column. For example, an (m+1)-quasi-diagonal matrix: \begin{bmatrix} d_1 & 0 & \dots & 0 & x_1 \\ 0 & d_2 & \ddots & \vdots & \vdots \\ \vdots & \ddots & \ddots & 0 & \vdots \\ \vdots & & \ddots & d_m & x_m \\ 0 & \ldots & \ldots & 0 & p \end{bmatrix} In my case, $d_1,\dots,~d_m,~p > 0$ and $d_1,\dots,~d_m$ are the same for all computations (only $x_1,\dots,~x_m$ and $p$ change).
$m$ is not very large (say $50$ max), but I need to do this many times (~500,000). So, I wonder if there is a clever way to get the SVD of this type of matrix.