public void LpMetric_Dist_Ctor() { var metric = new LpMetric(0.8F); var p1 = new double[] { 1.0F, 0.0F }; var p2 = new double[] { 0.0F, 1.0F }; metric.Dist(p1, p2); }
public void LpMetric_Dist_Validation() { var metric = new LpMetric(1.2F); var p1 = new double[] { 1.0F, 0.0F }; var p2 = new double[] { 0.0F, 1.0F, 3.0F }; metric.Dist(p1, p2); }
public void LpMetric_Dist_Test() { var p = 3.8F; var metric1 = new LpMetric(1.0F); var metric2 = new LpMetric(p); var p1 = new double[] { 1.0F, 0.0F }; var p2 = new double[] { 0.0F, 1.0F }; var p3 = new double[] { 1.0F, 3.0F }; var d12 = metric1.Dist(p1, p2); var d21 = metric1.Dist(p2, p1); var d13 = metric1.Dist(p1, p3); var d31 = metric1.Dist(p3, p1); var d23 = metric1.Dist(p2, p3); var d32 = metric1.Dist(p3, p2); Assert.AreEqual(2.0F, d12, EPS); Assert.AreEqual(2.0F, d21, EPS); Assert.AreEqual(3.0F, d13, EPS); Assert.AreEqual(3.0F, d31, EPS); Assert.AreEqual(3.0F, d32, EPS); Assert.AreEqual(3.0F, d23, EPS); d12 = metric2.Dist(p1, p2); d21 = metric2.Dist(p2, p1); d13 = metric2.Dist(p1, p3); d31 = metric2.Dist(p3, p1); d23 = metric2.Dist(p2, p3); d32 = metric2.Dist(p3, p2); Assert.AreEqual(Math.Pow(2.0D, 1.0D / p), d12, EPS); Assert.AreEqual(Math.Pow(2.0D, 1.0D / p), d21, EPS); Assert.AreEqual(3.0F, d13, EPS); Assert.AreEqual(3.0F, d31, EPS); Assert.AreEqual(Math.Pow(1 + Math.Pow(2.0D, p), 1.0D / p), d23, EPS); Assert.AreEqual(Math.Pow(1 + Math.Pow(2.0D, p), 1.0D / p), d32, EPS); }