Provides IEEE-754r variants of NumberUtils methods.
* *See: http://en.wikipedia.org/wiki/IEEE_754r
* * @since 2.4 * @version $Id: IEEE754rUtils.java 634088 2008-03-06 00:06:05Z niallp $ */ public class IEEE754rUtils { /** *Returns the minimum value in an array.
* * @param array an array, must not be null or empty * @return the minimum value in the array * @throws IllegalArgumentException ifarray
is null
* @throws IllegalArgumentException if array
is empty
*/
public static double min(double[] array) {
// Validates input
if (array == null) {
throw new IllegalArgumentException("The Array must not be null");
} else if (array.length == 0) {
throw new IllegalArgumentException("Array cannot be empty.");
}
// Finds and returns min
double min = array[0];
for (int i = 1; i < array.length; i++) {
min = min(array[i], min);
}
return min;
}
/**
* Returns the minimum value in an array.
* * @param array an array, must not be null or empty * @return the minimum value in the array * @throws IllegalArgumentException ifarray
is null
* @throws IllegalArgumentException if array
is empty
*/
public static float min(float[] array) {
// Validates input
if (array == null) {
throw new IllegalArgumentException("The Array must not be null");
} else if (array.length == 0) {
throw new IllegalArgumentException("Array cannot be empty.");
}
// Finds and returns min
float min = array[0];
for (int i = 1; i < array.length; i++) {
min = min(array[i], min);
}
return min;
}
/**
* Gets the minimum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @param c value 3 * @return the smallest of the values */ public static double min(double a, double b, double c) { return min(min(a, b), c); } /** *Gets the minimum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @return the smallest of the values */ public static double min(double a, double b) { if(Double.isNaN(a)) { return b; } else if(Double.isNaN(b)) { return a; } else { return Math.min(a, b); } } /** *Gets the minimum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @param c value 3 * @return the smallest of the values */ public static float min(float a, float b, float c) { return min(min(a, b), c); } /** *Gets the minimum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @return the smallest of the values */ public static float min(float a, float b) { if(Float.isNaN(a)) { return b; } else if(Float.isNaN(b)) { return a; } else { return Math.min(a, b); } } /** *Returns the maximum value in an array.
* * @param array an array, must not be null or empty * @return the minimum value in the array * @throws IllegalArgumentException ifarray
is null
* @throws IllegalArgumentException if array
is empty
*/
public static double max(double[] array) {
// Validates input
if (array== null) {
throw new IllegalArgumentException("The Array must not be null");
} else if (array.length == 0) {
throw new IllegalArgumentException("Array cannot be empty.");
}
// Finds and returns max
double max = array[0];
for (int j = 1; j < array.length; j++) {
max = max(array[j], max);
}
return max;
}
/**
* Returns the maximum value in an array.
* * @param array an array, must not be null or empty * @return the minimum value in the array * @throws IllegalArgumentException ifarray
is null
* @throws IllegalArgumentException if array
is empty
*/
public static float max(float[] array) {
// Validates input
if (array == null) {
throw new IllegalArgumentException("The Array must not be null");
} else if (array.length == 0) {
throw new IllegalArgumentException("Array cannot be empty.");
}
// Finds and returns max
float max = array[0];
for (int j = 1; j < array.length; j++) {
max = max(array[j], max);
}
return max;
}
/**
* Gets the maximum of three double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @param c value 3 * @return the largest of the values */ public static double max(double a, double b, double c) { return max(max(a, b), c); } /** *Gets the maximum of two double
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @return the largest of the values */ public static double max(double a, double b) { if(Double.isNaN(a)) { return b; } else if(Double.isNaN(b)) { return a; } else { return Math.max(a, b); } } /** *Gets the maximum of three float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @param c value 3 * @return the largest of the values */ public static float max(float a, float b, float c) { return max(max(a, b), c); } /** *Gets the maximum of two float
values.
NaN is only returned if all numbers are NaN as per IEEE-754r.
* * @param a value 1 * @param b value 2 * @return the largest of the values */ public static float max(float a, float b) { if(Float.isNaN(a)) { return b; } else if(Float.isNaN(b)) { return a; } else { return Math.max(a, b); } } }