public void SolveTest2()
{
float[][] value = // not positive-definite
{
new float[] { 6, -1, 2, 6 },
new float[] { -1, 3, -3, -2 },
new float[] { 2, -3, 2, 0 },
new float[] { 6, -2, 0, 0 },
};
var chol = new JaggedCholeskyDecompositionF(value, robust: true);
float[][] L = chol.LeftTriangularFactor;
float[][] B = Matrix.Identity(4).ToSingle().ToJagged();
float[][] expected =
{
new float[] { 0.4000f, 1.2000f, 1.4000f, -0.5000f },
new float[] { 1.2000f, 3.6000f, 4.2000f, -2.0000f },
new float[] { 1.4000f, 4.2000f, 5.4000f, -2.5000f },
new float[] { -0.5000f, -2.0000f, -2.5000f, 1.0000f },
};
float[][] actual = chol.Solve(B);
Assert.IsTrue(Matrix.IsEqual(expected, actual, 1e-4f));
}