### Question:
RobustMath { public static double[] multiply(double a, double b, double[] result) { double x = a * b; double c = SPLITTER * a; double abig = c - a; double ahi = c - abig; double alo = a - ahi; double d = SPLITTER * b; double bbig = d - b; double bhi = d - bbig; double blo = b - bhi; double err1 = x - ahi * bhi; double err2 = err1 - alo * bhi; double err3 = err2 - ahi * blo; double y = alo * blo - err3; if (result != null) { result[0] = y; result[1] = x; return result; } return new double[] { y, x }; } private  RobustMath(); static double[] add(double a, double b, double[] result); static double[] add(double a, double b); static double[] add(double[] e, double[] f); static double[] toArray(ArrayList<Double> g); static double[] subtract(double a, double b); static double[] subtract(double[] e, double[] f); static double[] multiply(double a, double b, double[] result); static double[] multiply(double a, double b); static double[] multiply(double[] e, double scale);  }### Answer:
@Test public void testMultiply() { same(multiply(n(4), 2), n(8)); same(multiply(n(1, 1e64), 2), n(2, 2e64)); same(multiply(n(1), 1), n(1)); for (int i = -50; i < 50; ++i) { for (int j = -50; j < 50; ++j) { same(multiply(n(i), j), n(i * j)); } } }