Pareto { public static <C extends Comparable<? super C>> int dominance(final C[] u, final C[] v) { return dominance(u, v, Comparator.naturalOrder()); } private  Pareto(); static double[] crowdingDistance(final BaseSeq<? extends Vec<T>> set); static double[] crowdingDistance(
		final BaseSeq<? extends T> set,
		final ElementComparator<? super T> comparator,
		final ElementDistance<? super T> distance,
		final ToIntFunction<? super T> dimension
	); static int[] rank(final BaseSeq<? extends Vec<T>> set); static int[] rank(
		final BaseSeq<? extends T> set,
		final Comparator<? super T> dominance
	); static ISeq<Vec<T>> front(final BaseSeq<? extends Vec<T>> set); static ISeq<T> front(
		final BaseSeq<? extends T> set,
		final Comparator<? super T> dominance
	); static int dominance(final C[] u, final C[] v); static int dominance(final T[] u, final T[] v, final Comparator<? super T> comparator); static int dominance(final int[] u, final int[] v); static int dominance(final long[] u, final long[] v); static int dominance(final double[] u, final double[] v); static int dominance(
		final V u,
		final V v,
		final int dimensions,
		final ElementComparator<? super V> comparator
	);  }
@Test public void dominance() { final ISeq<Vec<double[]>> outline = circle(1000, new Random(234)); for (Vec<double[]> p : outline) { Assert.assertTrue(p.dominance(p) == 0); Assert.assertTrue(p.dominance(Vec.of(-1.0, -1.0)) > 0); Assert.assertTrue(p.dominance(Vec.of(1.0, 1.0)) < 0); Assert.assertTrue(Vec.of(-1.0, -1.0).dominance(p) < 0); Assert.assertTrue(Vec.of(1.0, 1.0).dominance(p) > 0); for (Vec<double[]> p2 : outline) { if (p.dominance(p2) == 0) { Assert.assertTrue(p2.dominance(p) == 0); } if (p.dominance(p2) < 0) { Assert.assertTrue(p2.dominance(p) > 0); } if (p.dominance(p2) > 0) { Assert.assertTrue(p2.dominance(p) < 0); } } } }