The min() method of NumberUtils returns the wrong result if the first value of the array happens to be Float.NaN. The following code snippet shows the behaviour:
float a[] = new float[] {(float) 1.2, Float.NaN, (float) 3.7, (float) 27.0, (float) 42.0, Float.NaN};
float b[] = new float[] {Float.NaN, (float) 1.2, Float.NaN, (float) 3.7, (float) 27.0, (float) 42.0, Float.NaN};
float min = NumberUtils.min(a);
System.out.println("min(a): " + min); // output: 1.2
min = NumberUtils.min(b);
System.out.println("min(b): " + min); // output: NaN
This problem may exist for double-arrays as well.
Proposal: Use Float.compare(float, float) or NumberUtils.compare(float, float) to achieve a consistent result.