public void JaggedSingularValueDecompositionConstructorTest6()
{
// Test using SVD assumption auto-correction feature in place
double[][] value1 =
{
new double[] { 2.5, 2.4 },
new double[] { 0.5, 0.7 },
new double[] { 2.2, 2.9 },
new double[] { 1.9, 2.2 },
new double[] { 3.1, 3.0 },
new double[] { 2.3, 2.7 },
new double[] { 2.0, 1.6 },
new double[] { 1.0, 1.1 },
new double[] { 1.5, 1.6 },
new double[] { 1.1, 0.9 }
};
var value2 = value1.Transpose();
var cvalue1 = value1.Copy();
var cvalue2 = value2.Copy();
var target1 = new JaggedSingularValueDecomposition(cvalue1, true, true, true, true);
var target2 = new JaggedSingularValueDecomposition(cvalue2, true, true, true, true);
Assert.IsFalse(value1.IsEqual(cvalue1, 1e-3));
Assert.IsTrue(value2.IsEqual(cvalue2, 1e-3)); // due to auto-transpose
Assert.IsTrue(target1.LeftSingularVectors.IsEqual(target2.RightSingularVectors));
Assert.IsTrue(target1.RightSingularVectors.IsEqual(target2.LeftSingularVectors));
Assert.IsTrue(target1.DiagonalMatrix.IsEqual(target2.DiagonalMatrix));
Assert.IsTrue(Matrix.IsEqual(value1, target1.Reverse(), 1e-2));
Assert.IsTrue(Matrix.IsEqual(value2, target2.Reverse(), 1e-2));
}