This is an automated email from the ASF dual-hosted git repository.

erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-math.git


The following commit(s) were added to refs/heads/master by this push:
     new 093c7ecbf Add "checkFinite" utility method.
093c7ecbf is described below

commit 093c7ecbf514d5f196bcb4afd9a67932e9e28f21
Author: Gilles Sadowski <gillese...@gmail.com>
AuthorDate: Thu Jan 5 19:52:17 2023 +0100

    Add "checkFinite" utility method.
    
    Functionality was defined in class "MathUtils" (in v3.6.1).
---
 .../commons/math4/legacy/core/MathArrays.java      | 19 ++++++++++++++++++
 .../commons/math4/legacy/core/MathArraysTest.java  | 23 ++++++++++++++++++++++
 2 files changed, 42 insertions(+)

diff --git 
a/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java
 
b/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java
index 7b4284b8f..869d10ad5 100644
--- 
a/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java
+++ 
b/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java
@@ -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.NullArgumentException;
 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.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.
      *
diff --git 
a/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/MathArraysTest.java
 
b/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/MathArraysTest.java
index 54677765b..99f09ff02 100644
--- 
a/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/MathArraysTest.java
+++ 
b/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/MathArraysTest.java
@@ -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.NotStrictlyPositiveException;
 import org.apache.commons.math4.legacy.exception.NullArgumentException;
+import org.apache.commons.math4.legacy.exception.NotFiniteNumberException;
 import org.apache.commons.math4.core.jdkmath.JdkMath;
 
 /**
@@ -757,4 +758,26 @@ public class MathArraysTest {
     public void testUniqueNullArgument() {
         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
+        }
+    }
 }

Reply via email to