package gdsc.smlm.fitting.linear; import java.util.Arrays; import gdsc.smlm.fitting.linear.GaussJordan; import org.junit.Assert; import org.junit.Test; public class GaussJordanTest { @Test public void canSolveLinearEquation() { GaussJordan solver = new GaussJordan(); // Solves (one) linear equation, a x = b, for x[n] // Example taken from http://eigen.tuxfamily.org/dox/TutorialLinearAlgebra.html float[][] a = new float[][] { new float[] { 1, 2, 3 }, new float[] { 4, 5, 6 }, new float[] { 7, 8, 10 } }; float[] b = new float[] { 3, 3, 4 }; float[] expecteds = new float[] { -2, 1, 1 }; boolean result = solver.solve(a, b); Assert.assertTrue(result); Assert.assertArrayEquals(expecteds, b, 1e-4f); log("x = %s\n", Arrays.toString(b)); for (int i=0; i<b.length; i++) log("a[%d] = %s\n", i, Arrays.toString(a[i])); } void log(String format, Object... args) { System.out.printf(format, args); } }