I quickly tried to reproduce this, but I failed. I've used Math.NET Numerics v2.6 (NuGet package), but there was no change around the SVD decomposition in this release. This is my code:
var m = DenseMatrix.OfArray(new double[,] {
{ 3, 0, 0, 0, 0 },
{ 0, 2, 4, 0, 0 },
{ 0, 4, 5, -4, 5 },
{ 0, 0, -4, -8, 12},
{ 0, 0, 5, 12, -5 }});
var svd = m.Svd(true);
//var svd = new UserSvd(m, true);
svd.U() * svd.W() * svd.VT()
Where the last line evaluates to:
DenseMatrix 5x5-Double
3 0 0 0 0
0 2 4 -1.23512E-15 -3.747E-16
0 4 5 -4 5
0 3.26128E-16 -4 -8 12
0 -1.15186E-15 5 12 -5
VT in this case is:
DenseMatrix 5x5-Double
0 -0.0449147 0.249507 0.718099 -0.648123
0 0.466822 0.823535 0.0324572 0.320646
0 0.208479 0.176729 -0.670706 -0.689534
-1 0 0 0 0
0 0.858252 -0.477811 0.182848 -0.0408292
I wonder why you get a completely different result? Can you try again with the same code I posted above?