public void JaggedCholeskyDecompositionFConstructorTest()
{
// Based on tests by Ken Johnson
float[][] value = // positive-definite
{
new float[] { 2, -1, 0 },
new float[] { -1, 2, -1 },
new float[] { 0, -1, 2 }
};
float[][] expected =
{
new float[] { 1.4142f, 0.0000f, 0.0000f },
new float[] { -0.7071f, 1.2247f, 0.0000f },
new float[] { 0.0000f, -0.8165f, 1.1547f }
};
var chol = new JaggedCholeskyDecompositionF(value);
float[][] L = chol.LeftTriangularFactor;
Assert.IsTrue(Matrix.IsEqual(L, expected, 1e-4f));
// Decomposition Identity
Assert.IsTrue(Matrix.IsEqual(Matrix.Multiply(L, L.Transpose()), value, 1e-3f));
Assert.AreEqual(new JaggedLuDecompositionF(value).Determinant, chol.Determinant, 1e-5);
Assert.IsTrue(chol.IsPositiveDefinite);
}