public void RunTest1()
{
double[,] D = Matrix.Identity(3);
double[] d = { 1, 5, 3 };
double[,] A =
{
{ -4, 2, 0 },
{ -3, 1, -2 },
{ 0, 0, 1 },
};
double[] b = { -8, 2, 0 };
GoldfarbIdnani target = new GoldfarbIdnani(D, d.Multiply(-1), A.Transpose(), b);
Assert.IsTrue(target.Minimize());
double actual = target.Value;
Assert.AreEqual(-12.41011, actual, 1e-5);
Assert.IsFalse(double.IsNaN(actual));
Assert.AreEqual(3, target.Iterations);
Assert.AreEqual(0, target.Deletions);
Assert.AreEqual(0.4157303, target.Solution[0], 1e-6);
Assert.AreEqual(2.1123596, target.Solution[1], 1e-6);
Assert.AreEqual(4.2247191, target.Solution[2], 1e-6);
Assert.AreEqual(0.1460674, target.Lagrangian[0], 1e-6);
Assert.AreEqual(0.0000000, target.Lagrangian[1], 1e-6);
Assert.AreEqual(1.2247191, target.Lagrangian[2], 1e-6);
foreach (double v in target.Lagrangian)
Assert.IsFalse(double.IsNaN(v));
foreach (double v in target.Solution)
Assert.IsFalse(double.IsNaN(v));
}