Accord.Math.Decompositions.CholeskyDecomposition.LLt C# (CSharp) Méthode

LLt() private méthode

private LLt ( double value ) : void
value double
Résultat void
        private unsafe void LLt(double[,] value)
        {
            n = value.GetLength(0);
            L = new double[n,n];
            D = Matrix.Vector(n, 1.0);
            robust = false;

            double[,] a = value;

            positiveDefinite = true;
            symmetric = true;

            fixed (double* ptrL = L)
            {
                for (int j = 0; j < n; j++)
                {
                    double* Lrowj = ptrL + j*n;
                    double d = 0.0;
                    for (int k = 0; k < j; k++)
                    {
                        double* Lrowk = ptrL + k*n;

                        double s = 0.0;
                        for (int i = 0; i < k; i++)
                            s += Lrowk[i]*Lrowj[i];

                        Lrowj[k] = s = (a[j, k] - s)/Lrowk[k];
                        d += s*s;

                        symmetric = symmetric & (a[k, j] == a[j, k]);
                    }

                    d = a[j, j] - d;

                    positiveDefinite = positiveDefinite & (d > 0.0);
                    Lrowj[j] = System.Math.Sqrt(System.Math.Max(d, 0.0));

                    for (int k = j + 1; k < n; k++)
                        Lrowj[k] = 0.0;
                }
            }
        }