You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2021/05/25 22:29:32 UTC
[commons-math] 01/04: MATH-1581: Removed "hash" methods.
This is an automated email from the ASF dual-hosted git repository.
erans pushed a commit to branch modularized_master
in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 35d56cc547b95e3d2c1a8850e0e8cefb35ffa093
Author: Gilles Sadowski <gi...@gmail.com>
AuthorDate: Tue May 25 23:17:11 2021 +0200
MATH-1581: Removed "hash" methods.
---
.../differentiation/DerivativeStructure.java | 3 +-
.../analysis/differentiation/SparseGradient.java | 2 +-
.../math4/legacy/linear/AbstractRealMatrix.java | 2 +-
.../math4/legacy/linear/ArrayRealVector.java | 2 +-
.../AbstractStorelessUnivariateStatistic.java | 2 +-
.../descriptive/MultivariateSummaryStatistics.java | 18 ++---
.../stat/descriptive/StatisticalSummaryValues.java | 12 ++--
.../legacy/stat/descriptive/SummaryStatistics.java | 18 ++---
.../commons/math4/legacy/util/MathUtils.java | 22 ------
.../commons/math4/legacy/util/MathUtilsTest.java | 78 ----------------------
10 files changed, 30 insertions(+), 129 deletions(-)
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructure.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructure.java
index 56ea24c..0d09042 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructure.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructure.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.math4.legacy.analysis.differentiation;
+import java.util.Arrays;
import java.io.Serializable;
import org.apache.commons.numbers.arrays.LinearCombination;
@@ -1201,7 +1202,7 @@ public class DerivativeStructure implements RealFieldElement<DerivativeStructure
*/
@Override
public int hashCode() {
- return 227 + 229 * getFreeParameters() + 233 * getOrder() + 239 * MathUtils.hash(data);
+ return 227 + 229 * getFreeParameters() + 233 * getOrder() + 239 * Arrays.hashCode(data);
}
/**
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/SparseGradient.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/SparseGradient.java
index 4deb958..68d05af 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/SparseGradient.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/differentiation/SparseGradient.java
@@ -931,7 +931,7 @@ public class SparseGradient implements RealFieldElement<SparseGradient>, Seriali
*/
@Override
public int hashCode() {
- return 743 + 809 * MathUtils.hash(value) + 167 * derivatives.hashCode();
+ return 743 + 809 * Double.hashCode(value) + 167 * derivatives.hashCode();
}
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/AbstractRealMatrix.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/AbstractRealMatrix.java
index 665306b..9719e14 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/AbstractRealMatrix.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/AbstractRealMatrix.java
@@ -993,7 +993,7 @@ public abstract class AbstractRealMatrix
for (int row = 0; row < nRows; ++row) {
for (int col = 0; col < nCols; ++col) {
ret = ret * 31 + (11 * (row+1) + 17 * (col+1)) *
- MathUtils.hash(getEntry(row, col));
+ Double.hashCode(getEntry(row, col));
}
}
return ret;
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/ArrayRealVector.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/ArrayRealVector.java
index 360df11..f4c8725 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/ArrayRealVector.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/linear/ArrayRealVector.java
@@ -832,7 +832,7 @@ public class ArrayRealVector extends RealVector implements Serializable {
if (isNaN()) {
return 9;
}
- return MathUtils.hash(data);
+ return Arrays.hashCode(data);
}
/** {@inheritDoc} */
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/AbstractStorelessUnivariateStatistic.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/AbstractStorelessUnivariateStatistic.java
index b9d4f01..6e3c21d 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/AbstractStorelessUnivariateStatistic.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/AbstractStorelessUnivariateStatistic.java
@@ -186,7 +186,7 @@ public abstract class AbstractStorelessUnivariateStatistic
*/
@Override
public int hashCode() {
- return 31 * (31 + MathUtils.hash(getResult())) + MathUtils.hash(getN());
+ return 31 * (31 + Double.hashCode(getResult())) + Double.hashCode(getN());
}
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/MultivariateSummaryStatistics.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/MultivariateSummaryStatistics.java
index dd5641c..9af80eb 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/MultivariateSummaryStatistics.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/MultivariateSummaryStatistics.java
@@ -402,15 +402,15 @@ public class MultivariateSummaryStatistics
*/
@Override
public int hashCode() {
- int result = 31 + MathUtils.hash(getGeometricMean());
- result = result * 31 + MathUtils.hash(getGeometricMean());
- result = result * 31 + MathUtils.hash(getMax());
- result = result * 31 + MathUtils.hash(getMean());
- result = result * 31 + MathUtils.hash(getMin());
- result = result * 31 + MathUtils.hash(getN());
- result = result * 31 + MathUtils.hash(getSum());
- result = result * 31 + MathUtils.hash(getSumSq());
- result = result * 31 + MathUtils.hash(getSumLog());
+ int result = 31 + Arrays.hashCode(getGeometricMean());
+ result = result * 31 + Arrays.hashCode(getGeometricMean());
+ result = result * 31 + Arrays.hashCode(getMax());
+ result = result * 31 + Arrays.hashCode(getMean());
+ result = result * 31 + Arrays.hashCode(getMin());
+ result = result * 31 + Double.hashCode(getN());
+ result = result * 31 + Arrays.hashCode(getSum());
+ result = result * 31 + Arrays.hashCode(getSumSq());
+ result = result * 31 + Arrays.hashCode(getSumLog());
result = result * 31 + getCovariance().hashCode();
return result;
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/StatisticalSummaryValues.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/StatisticalSummaryValues.java
index 0129f3b..2d98f9f 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/StatisticalSummaryValues.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/StatisticalSummaryValues.java
@@ -159,12 +159,12 @@ public class StatisticalSummaryValues implements Serializable,
*/
@Override
public int hashCode() {
- int result = 31 + MathUtils.hash(getMax());
- result = result * 31 + MathUtils.hash(getMean());
- result = result * 31 + MathUtils.hash(getMin());
- result = result * 31 + MathUtils.hash(getN());
- result = result * 31 + MathUtils.hash(getSum());
- result = result * 31 + MathUtils.hash(getVariance());
+ int result = 31 + Double.hashCode(getMax());
+ result = result * 31 + Double.hashCode(getMean());
+ result = result * 31 + Double.hashCode(getMin());
+ result = result * 31 + Double.hashCode(getN());
+ result = result * 31 + Double.hashCode(getSum());
+ result = result * 31 + Double.hashCode(getVariance());
return result;
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/SummaryStatistics.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/SummaryStatistics.java
index 61f2a76..ef817d7 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/SummaryStatistics.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/stat/descriptive/SummaryStatistics.java
@@ -412,15 +412,15 @@ public class SummaryStatistics implements StatisticalSummary, Serializable {
*/
@Override
public int hashCode() {
- int result = 31 + MathUtils.hash(getGeometricMean());
- result = result * 31 + MathUtils.hash(getGeometricMean());
- result = result * 31 + MathUtils.hash(getMax());
- result = result * 31 + MathUtils.hash(getMean());
- result = result * 31 + MathUtils.hash(getMin());
- result = result * 31 + MathUtils.hash(getN());
- result = result * 31 + MathUtils.hash(getSum());
- result = result * 31 + MathUtils.hash(getSumsq());
- result = result * 31 + MathUtils.hash(getVariance());
+ int result = 31 + Double.hashCode(getGeometricMean());
+ result = result * 31 + Double.hashCode(getGeometricMean());
+ result = result * 31 + Double.hashCode(getMax());
+ result = result * 31 + Double.hashCode(getMean());
+ result = result * 31 + Double.hashCode(getMin());
+ result = result * 31 + Double.hashCode(getN());
+ result = result * 31 + Double.hashCode(getSum());
+ result = result * 31 + Double.hashCode(getSumsq());
+ result = result * 31 + Double.hashCode(getVariance());
return result;
}
diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/util/MathUtils.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/util/MathUtils.java
index 2a0846d..5336875 100644
--- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/util/MathUtils.java
+++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/util/MathUtils.java
@@ -51,17 +51,6 @@ public final class MathUtils {
*/
private MathUtils() {}
-
- /**
- * Returns an integer hash code representing the given double value.
- *
- * @param value the value to be hashed
- * @return the hash code
- */
- public static int hash(double value) {
- return Double.valueOf(value).hashCode();
- }
-
/**
* Returns {@code true} if the values are equal according to semantics of
* {@link Double#equals(Object)}.
@@ -74,17 +63,6 @@ public final class MathUtils {
return Double.valueOf(x).equals(Double.valueOf(y));
}
- /**
- * Returns an integer hash code representing the given double array.
- *
- * @param value the value to be hashed (may be null)
- * @return the hash code
- * @since 1.2
- */
- public static int hash(double[] value) {
- return Arrays.hashCode(value);
- }
-
/** Find the maximum of two field elements.
* @param <T> the type of the field elements
* @param e1 first element
diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/util/MathUtilsTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/util/MathUtilsTest.java
index 81e2cab..5023783 100644
--- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/util/MathUtilsTest.java
+++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/util/MathUtilsTest.java
@@ -49,84 +49,6 @@ public final class MathUtilsTest {
}
@Test
- public void testHash() {
- double[] testArray = {
- Double.NaN,
- Double.POSITIVE_INFINITY,
- Double.NEGATIVE_INFINITY,
- 1d,
- 0d,
- 1E-14,
- (1 + 1E-14),
- Double.MIN_VALUE,
- Double.MAX_VALUE };
- for (int i = 0; i < testArray.length; i++) {
- for (int j = 0; j < testArray.length; j++) {
- if (i == j) {
- Assert.assertEquals(MathUtils.hash(testArray[i]), MathUtils.hash(testArray[j]));
- Assert.assertEquals(MathUtils.hash(testArray[j]), MathUtils.hash(testArray[i]));
- } else {
- Assert.assertTrue(MathUtils.hash(testArray[i]) != MathUtils.hash(testArray[j]));
- Assert.assertTrue(MathUtils.hash(testArray[j]) != MathUtils.hash(testArray[i]));
- }
- }
- }
- }
-
- @Test
- public void testArrayHash() {
- Assert.assertEquals(0, MathUtils.hash((double[]) null));
- Assert.assertEquals(MathUtils.hash(new double[] {
- Double.NaN, Double.POSITIVE_INFINITY,
- Double.NEGATIVE_INFINITY, 1d, 0d
- }),
- MathUtils.hash(new double[] {
- Double.NaN, Double.POSITIVE_INFINITY,
- Double.NEGATIVE_INFINITY, 1d, 0d
- }));
- Assert.assertFalse(MathUtils.hash(new double[] { 1d }) ==
- MathUtils.hash(new double[] { FastMath.nextAfter(1d, 2d) }));
- Assert.assertFalse(MathUtils.hash(new double[] { 1d }) ==
- MathUtils.hash(new double[] { 1d, 1d }));
- }
-
- /**
- * Make sure that permuted arrays do not hash to the same value.
- */
- @Test
- public void testPermutedArrayHash() {
- double[] original = new double[10];
- double[] permuted = new double[10];
-
- final UniformRandomProvider random = RandomSource.create(RandomSource.WELL_512_A,
- 64925784252L);
-
- // Generate 10 distinct random values
- for (int i = 0; i < 10; i++) {
- final ContinuousDistribution.Sampler u
- = new UniformContinuousDistribution(i + 0.5, i + 0.75).createSampler(random);
- original[i] = u.sample();
- }
-
- // Generate a random permutation, making sure it is not the identity
- boolean isIdentity = true;
- do {
- int[] permutation = PermutationSampler.natural(10);
- PermutationSampler.shuffle(random, permutation);
- for (int i = 0; i < 10; i++) {
- if (i != permutation[i]) {
- isIdentity = false;
- break;
- }
- permuted[i] = original[permutation[i]];
- }
- } while (isIdentity);
-
- // Verify that permuted array has different hash
- Assert.assertFalse(MathUtils.hash(original) == MathUtils.hash(permuted));
- }
-
- @Test
public void testIndicatorByte() {
Assert.assertEquals((byte)1, MathUtils.copySign((byte)1, (byte)2));
Assert.assertEquals((byte)1, MathUtils.copySign((byte)1, (byte)0));