PenroseShape { public static double distance(double[] v1, double[] v2){ Asserts.assertEqualLength(v1, v2); double meanV1 = CommonStats.mean(v1); double meanV2 = CommonStats.mean(v2); double sum = 0; for(int i=0;i<v1.length;i++){ sum += Math.pow((v1[i]-meanV1)-(v2[i]-meanV2),2); } return Math.sqrt(sum); }  static double distance(double[] v1, double[] v2);  }
@Test public void test1(){ double[] v1 = new double[]{8,3,7}; double[] v2 = new double[]{9,8,4}; Asserts.assertEqualLength(v1, v2); double res = PenroseShape.distance(v1, v2); Asserts.assertEquals(res, 5.65685424949238); }
@Test public void test2(){ double[] v1 = new double[]{8,-32,7,0,-45}; double[] v2 = new double[]{97,-78,41,-4,-78}; Asserts.assertEqualLength(v1, v2); double res = PenroseShape.distance(v1, v2); Asserts.assertEquals(res, 109.44404963267761); }
@Test public void test3(){ double[] v1 = new double[]{248.124,-321.574,788.14,0.001,-459.298}; double[] v2 = new double[]{97.145,-78.658,417.0004,-4.02,-7865.3594}; Asserts.assertEqualLength(v1, v2); double res = PenroseShape.distance(v1, v2); Asserts.assertEquals(res, 6576.03895296789738); }