[ https://issues.apache.org/jira/browse/MATH-1258?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Otmar Ertl updated MATH-1258: ----------------------------- Attachment: patch.diff I also do not like throwing an ArrayIndexOutOfBoundsException due to 2 reasons: * The current behavior is asymmetric. distance(a,b) succeeds while distance(b, a) fails with an exception, if a and b have different lengths. Since distance functions are known to be symmetric, their behavior should be symmetric too, even in case of invalid parameters. * The element-by-element functions in MathArrays throw a DimensionMismatchException instead of an ArrayIndexOutOfBoundsException. For the sake of consistency, I think throwing a DimensionMismatchException is more appropriate for distance functions as well. Please see attached patch. > compute() method in classes in org.apache.commons.math4.ml.distance package > --------------------------------------------------------------------------- > > Key: MATH-1258 > URL: https://issues.apache.org/jira/browse/MATH-1258 > Project: Commons Math > Issue Type: Bug > Reporter: Gunel Jahangirova > Priority: Minor > Attachments: patch.diff > > > Hi! > There are five classes CanberraDistance, ChebyshevDistance, > EarthMoversDistance, EuclideanDistance and ManhattanDistance in > org.apache.commons.math4.ml.distance package, which compute different types > of distances. Each of them contains method compute(double[] a, double[] b) > that accepts two double arrays as variables. > However, if the lengths of array a is greater than the length of array b, the > method compute() in all the five classes produces > java.lang.ArrayIndexOutOfBoundsException. > For example, > private void test0() { > CanberraDistance distance = new CanberraDistance(); > > final double[] a = { 1, 2, 3, 4, 9, 4 }; > final double[] b = { -5, -6, 7, 4, 3 }; > distance.compute(a, b); > } -- This message was sent by Atlassian JIRA (v6.3.4#6332)