Add "checkFinite" utility method.

Functionality was defined in class "MathUtils" (in v3.6.1).
This commit is contained in:
Gilles Sadowski 2023-01-05 19:52:17 +01:00
parent 90d2d4edde
commit 093c7ecbf5
2 changed files with 42 additions and 0 deletions

View File

@ -34,6 +34,7 @@ import org.apache.commons.math4.legacy.exception.NotPositiveException;
import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException; import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException;
import org.apache.commons.math4.legacy.exception.NullArgumentException; import org.apache.commons.math4.legacy.exception.NullArgumentException;
import org.apache.commons.math4.legacy.exception.NumberIsTooLargeException; import org.apache.commons.math4.legacy.exception.NumberIsTooLargeException;
import org.apache.commons.math4.legacy.exception.NotFiniteNumberException;
import org.apache.commons.math4.legacy.exception.util.LocalizedFormats; import org.apache.commons.math4.legacy.exception.util.LocalizedFormats;
import org.apache.commons.math4.core.jdkmath.JdkMath; import org.apache.commons.math4.core.jdkmath.JdkMath;
@ -573,6 +574,24 @@ public final class MathArrays {
} }
} }
/**
* Check that all the elements are real numbers.
*
* @param val Arguments.
* @throws NotFiniteNumberException if any values of the array is not a
* finite real number.
*/
public static void checkFinite(final double[] val)
throws NotFiniteNumberException {
for (int i = 0; i < val.length; i++) {
final double x = val[i];
if (Double.isInfinite(x) ||
Double.isNaN(x)) {
throw new NotFiniteNumberException(val[i]);
}
}
}
/** /**
* Check that all entries of the input array are &gt;= 0. * Check that all entries of the input array are &gt;= 0.
* *

View File

@ -31,6 +31,7 @@ import org.apache.commons.math4.legacy.exception.NotANumberException;
import org.apache.commons.math4.legacy.exception.NotPositiveException; import org.apache.commons.math4.legacy.exception.NotPositiveException;
import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException; import org.apache.commons.math4.legacy.exception.NotStrictlyPositiveException;
import org.apache.commons.math4.legacy.exception.NullArgumentException; import org.apache.commons.math4.legacy.exception.NullArgumentException;
import org.apache.commons.math4.legacy.exception.NotFiniteNumberException;
import org.apache.commons.math4.core.jdkmath.JdkMath; import org.apache.commons.math4.core.jdkmath.JdkMath;
/** /**
@ -757,4 +758,26 @@ public class MathArraysTest {
public void testUniqueNullArgument() { public void testUniqueNullArgument() {
MathArrays.unique(null); MathArrays.unique(null);
} }
@Test
public void testCheckFinite() {
try {
MathArrays.checkFinite(new double[] {0, -1, Double.POSITIVE_INFINITY, -2, 3});
Assert.fail("an exception should have been thrown");
} catch (NotFiniteNumberException e) {
// Expected
}
try {
MathArrays.checkFinite(new double[] {1, Double.NEGATIVE_INFINITY, -2, 3});
Assert.fail("an exception should have been thrown");
} catch (NotFiniteNumberException e) {
// Expected
}
try {
MathArrays.checkFinite(new double[] {4, 3, -1, Double.NaN, -2, 1});
Assert.fail("an exception should have been thrown");
} catch (NotFiniteNumberException e) {
// Expected
}
}
} }