Accord.Tests.Math.JaggedCholeskyDecompositionFTest.CholeskyDecompositionConstructorTest4 C# (CSharp) Method

CholeskyDecompositionConstructorTest4() private method

private CholeskyDecompositionConstructorTest4 ( ) : void
return void
        public void CholeskyDecompositionConstructorTest4()
        {
            // Based on tests by Ken Johnson

            float[][] value = // positive-definite
            {
               new float[] {  2f,  0f,  0f },
               new float[] { -1f,  2f,  0f },
               new float[] {  0f, -1f,  2f }
            };

            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, robust: false, valueType: MatrixType.LowerTriangular);
            float[][] L = chol.LeftTriangularFactor;

            Assert.IsTrue(Matrix.IsEqual(L, expected, 0.0001f));
            Assert.AreEqual(4, chol.Determinant, 1e-6);
            Assert.IsTrue(chol.IsPositiveDefinite);
            var reverse = chol.Reverse();
            Assert.IsTrue(Matrix.IsEqual(reverse, value.GetSymmetric(MatrixType.LowerTriangular), 1e-6f));



            float[][] expected2 =
            {
                 new float[] {  1.0f,  0.0f,        0.0f },
                 new float[] { -0.5f,  1.0f,        0.0f },
                 new float[] {  0.0f, -0.6666667f,  1.0f }
            };

            chol = new JaggedCholeskyDecompositionF(value, robust: true, valueType: MatrixType.LowerTriangular);
            L = chol.LeftTriangularFactor;

            Assert.IsTrue(Matrix.IsEqual(L, expected2, 0.0001f));
            Assert.AreEqual(4, chol.Determinant, 1e-6);
            Assert.IsTrue(chol.IsPositiveDefinite);
            reverse = chol.Reverse();
            Assert.IsTrue(Matrix.IsEqual(reverse, value.GetSymmetric(MatrixType.LowerTriangular), 1e-6f));
        }