public void RunTest4()
{
double[,] D =
{
{ 5, -2, -1 },
{ -2, 4, 3 },
{ -1, 3, 5 },
};
double[] d = { -2, +35, +47 };
double[,] A =
{
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
};
double[] b = { 0, 0, 0 };
GoldfarbIdnani target = new GoldfarbIdnani(D, d.Multiply(-1), A.Transpose(), b);
Assert.IsTrue(target.Minimize());
double actual = target.Value;
Assert.AreEqual(-249.0, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
Assert.AreEqual(1, target.Iterations);
Assert.AreEqual(0, target.Deletions);
Assert.AreEqual(3, target.Solution[0], 1e-6);
Assert.AreEqual(5, target.Solution[1], 1e-6);
Assert.AreEqual(7, target.Solution[2], 1e-6);
Assert.AreEqual(0, target.Lagrangian[0]);
Assert.AreEqual(0, target.Lagrangian[1]);
Assert.AreEqual(0, target.Lagrangian[2]);
foreach (double v in target.Lagrangian)
Assert.IsFalse(double.IsNaN(v));
foreach (double v in target.Solution)
Assert.IsFalse(double.IsNaN(v));
}