public void SolveTest()
{
double[,] value = // positive-definite
{
{ 2, -1, 0 },
{ -1, 2, -1 },
{ 0, -1, 2 }
};
var chol = new JaggedCholeskyDecomposition(value.ToJagged());
double[][] L = chol.LeftTriangularFactor;
double[][] B = Jagged.ColumnVector(new double[] { 1, 2, 3 });
double[][] expected = Jagged.ColumnVector(new double[] { 2.5, 4.0, 3.5 });
double[][] actual = chol.Solve(B);
Assert.IsTrue(Matrix.IsEqual(expected, actual, 1e-10));
Assert.AreNotEqual(actual, B);
actual = chol.Solve(B, true);
Assert.AreEqual(actual, B);
Assert.IsTrue(Matrix.IsEqual(expected, B, 1e-10));
Assert.IsTrue(Matrix.IsEqual(chol.Reverse(), value, 1e-6));
}