From dd6cad94213a2430f5ea443e8e5d1d4c7116b8e8 Mon Sep 17 00:00:00 2001 From: Arturo Bernal Date: Tue, 13 Apr 2021 07:13:28 +0200 Subject: [PATCH] MATH-1573 - Redundant local variable --- .../differentiation/SparseGradient.java | 3 +-- .../gauss/SymmetricGaussIntegrator.java | 3 +-- ...iseBicubicSplineInterpolatingFunction.java | 4 +-- .../math4/genetics/BinaryMutation.java | 3 +-- .../commons/math4/genetics/RandomKey.java | 4 +-- .../math4/linear/ConjugateGradient.java | 11 ++++---- .../math4/linear/OpenMapRealMatrix.java | 6 ++--- .../sofm/util/QuasiSigmoidDecayFunction.java | 6 ++--- .../commons/math4/ode/JacobianMatrices.java | 5 ++-- .../DormandPrince54FieldStepInterpolator.java | 13 +++++----- ...DormandPrince853FieldStepInterpolator.java | 5 ++-- .../nonstiff/LutherFieldStepInterpolator.java | 26 +++++++++---------- .../optim/nonlinear/scalar/LineSearch.java | 3 +-- .../scalar/noderiv/BOBYQAOptimizer.java | 3 +-- .../stat/descriptive/moment/Kurtosis.java | 5 ++-- .../math4/stat/descriptive/moment/Mean.java | 5 ++-- .../stat/descriptive/moment/Skewness.java | 3 +-- .../stat/descriptive/moment/Variance.java | 5 ++-- .../stat/inference/KolmogorovSmirnovTest.java | 7 ++--- .../apache/commons/math4/util/FastMath.java | 16 +++++------- 20 files changed, 53 insertions(+), 83 deletions(-) diff --git a/src/main/java/org/apache/commons/math4/analysis/differentiation/SparseGradient.java b/src/main/java/org/apache/commons/math4/analysis/differentiation/SparseGradient.java index 13893cd06e..ad48575df3 100644 --- a/src/main/java/org/apache/commons/math4/analysis/differentiation/SparseGradient.java +++ b/src/main/java/org/apache/commons/math4/analysis/differentiation/SparseGradient.java @@ -180,8 +180,7 @@ public void addInPlace(final SparseGradient a) { /** {@inheritDoc} */ @Override public SparseGradient add(final double c) { - final SparseGradient out = new SparseGradient(value + c, derivatives); - return out; + return new SparseGradient(value + c, derivatives); } /** {@inheritDoc} */ diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/gauss/SymmetricGaussIntegrator.java b/src/main/java/org/apache/commons/math4/analysis/integration/gauss/SymmetricGaussIntegrator.java index 1230a1dc24..66de0e30f8 100644 --- a/src/main/java/org/apache/commons/math4/analysis/integration/gauss/SymmetricGaussIntegrator.java +++ b/src/main/java/org/apache/commons/math4/analysis/integration/gauss/SymmetricGaussIntegrator.java @@ -89,9 +89,8 @@ public double integrate(UnivariateFunction f) { final double w = getWeight(iMax); final double y = w * f.value(0d) - c; - final double t = s + y; - s = t; + s = s + y; } return s; diff --git a/src/main/java/org/apache/commons/math4/analysis/interpolation/PiecewiseBicubicSplineInterpolatingFunction.java b/src/main/java/org/apache/commons/math4/analysis/interpolation/PiecewiseBicubicSplineInterpolatingFunction.java index f547a1f3b3..508a5866bd 100644 --- a/src/main/java/org/apache/commons/math4/analysis/interpolation/PiecewiseBicubicSplineInterpolatingFunction.java +++ b/src/main/java/org/apache/commons/math4/analysis/interpolation/PiecewiseBicubicSplineInterpolatingFunction.java @@ -142,9 +142,7 @@ public double value(double x, final PolynomialSplineFunction spline = interpolator.interpolate(yArray, interpArray); - double returnValue = spline.value(y); - - return returnValue; + return spline.value(y); } /** diff --git a/src/main/java/org/apache/commons/math4/genetics/BinaryMutation.java b/src/main/java/org/apache/commons/math4/genetics/BinaryMutation.java index d4afd75826..e05f0f2350 100644 --- a/src/main/java/org/apache/commons/math4/genetics/BinaryMutation.java +++ b/src/main/java/org/apache/commons/math4/genetics/BinaryMutation.java @@ -50,8 +50,7 @@ public Chromosome mutate(Chromosome original) throws MathIllegalArgumentExceptio // and change it newRepr.set(geneIndex, origChrom.getRepresentation().get(geneIndex) == 0 ? 1 : 0); - Chromosome newChrom = origChrom.newFixedLengthChromosome(newRepr); - return newChrom; + return origChrom.newFixedLengthChromosome(newRepr); } } diff --git a/src/main/java/org/apache/commons/math4/genetics/RandomKey.java b/src/main/java/org/apache/commons/math4/genetics/RandomKey.java index fe4b178a7e..82225cb0a3 100644 --- a/src/main/java/org/apache/commons/math4/genetics/RandomKey.java +++ b/src/main/java/org/apache/commons/math4/genetics/RandomKey.java @@ -159,11 +159,9 @@ protected boolean isSame(final Chromosome another) { // two different representations can still encode the same permutation // the ordering is what counts - List thisPerm = this.baseSeqPermutation; - List anotherPerm = anotherRk.baseSeqPermutation; for (int i=0; i= Integer.MAX_VALUE) { - throw new NumberIsTooLargeException(lRow * lCol, Integer.MAX_VALUE, false); + if ((long) rowDimension * (long) columnDimension >= Integer.MAX_VALUE) { + throw new NumberIsTooLargeException((long) rowDimension * (long) columnDimension, Integer.MAX_VALUE, false); } this.rows = rowDimension; this.columns = columnDimension; diff --git a/src/main/java/org/apache/commons/math4/ml/neuralnet/sofm/util/QuasiSigmoidDecayFunction.java b/src/main/java/org/apache/commons/math4/ml/neuralnet/sofm/util/QuasiSigmoidDecayFunction.java index e71a9bf897..738aa85d5c 100644 --- a/src/main/java/org/apache/commons/math4/ml/neuralnet/sofm/util/QuasiSigmoidDecayFunction.java +++ b/src/main/java/org/apache/commons/math4/ml/neuralnet/sofm/util/QuasiSigmoidDecayFunction.java @@ -63,16 +63,14 @@ public QuasiSigmoidDecayFunction(double initValue, throw new NotStrictlyPositiveException(numCall); } - final double k = initValue; - final double m = numCall; final double b = 4 * slope / initValue; final double q = 1; final double a = 0; final double n = 1; - sigmoid = new Logistic(k, m, b, q, a, n); + sigmoid = new Logistic(initValue, (double) numCall, b, q, a, n); final double y0 = sigmoid.value(0); - scale = k / y0; + scale = initValue / y0; } /** diff --git a/src/main/java/org/apache/commons/math4/ode/JacobianMatrices.java b/src/main/java/org/apache/commons/math4/ode/JacobianMatrices.java index 175d060b2a..6bb10e170d 100644 --- a/src/main/java/org/apache/commons/math4/ode/JacobianMatrices.java +++ b/src/main/java/org/apache/commons/math4/ode/JacobianMatrices.java @@ -371,13 +371,12 @@ public void computeDerivatives(final double t, final double[] y, final double[] final double[] dFdYi = dFdY[i]; for (int j = 0; j < stateDim; ++j) { double s = 0; - final int startIndex = j; - int zIndex = startIndex; + int zIndex = j; for (int l = 0; l < stateDim; ++l) { s += dFdYi[l] * z[zIndex]; zIndex += stateDim; } - zDot[startIndex + i * stateDim] = s; + zDot[j + i * stateDim] = s; } } diff --git a/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince54FieldStepInterpolator.java b/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince54FieldStepInterpolator.java index 61548ce76e..527d823c83 100644 --- a/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince54FieldStepInterpolator.java +++ b/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince54FieldStepInterpolator.java @@ -136,28 +136,27 @@ protected FieldODEStateAndDerivative computeInterpolatedStateAndDerivatives(f final T[] interpolatedState; final T[] interpolatedDerivatives; if (getGlobalPreviousState() != null && theta.getReal() <= 0.5) { - final T f1 = thetaH; - final T f2 = f1.multiply(eta); + final T f2 = thetaH.multiply(eta); final T f3 = f2.multiply(theta); final T f4 = f3.multiply(eta); - final T coeff0 = f1.multiply(a70). + final T coeff0 = thetaH.multiply(a70). subtract(f2.multiply(a70.subtract(1))). add(f3.multiply(a70.multiply(2).subtract(1))). add(f4.multiply(d0)); final T coeff1 = time.getField().getZero(); - final T coeff2 = f1.multiply(a72). + final T coeff2 = thetaH.multiply(a72). subtract(f2.multiply(a72)). add(f3.multiply(a72.multiply(2))). add(f4.multiply(d2)); - final T coeff3 = f1.multiply(a73). + final T coeff3 = thetaH.multiply(a73). subtract(f2.multiply(a73)). add(f3.multiply(a73.multiply(2))). add(f4.multiply(d3)); - final T coeff4 = f1.multiply(a74). + final T coeff4 = thetaH.multiply(a74). subtract(f2.multiply(a74)). add(f3.multiply(a74.multiply(2))). add(f4.multiply(d4)); - final T coeff5 = f1.multiply(a75). + final T coeff5 = thetaH.multiply(a75). subtract(f2.multiply(a75)). add(f3.multiply(a75.multiply(2))). add(f4.multiply(d5)); diff --git a/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince853FieldStepInterpolator.java b/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince853FieldStepInterpolator.java index 5228dd2117..a68743280b 100644 --- a/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince853FieldStepInterpolator.java +++ b/src/main/java/org/apache/commons/math4/ode/nonstiff/DormandPrince853FieldStepInterpolator.java @@ -234,8 +234,7 @@ protected FieldODEStateAndDerivative computeInterpolatedStateAndDerivatives(f if (getGlobalPreviousState() != null && theta.getReal() <= 0.5) { - final T f0 = thetaH; - final T f1 = f0.multiply(eta); + final T f1 = thetaH.multiply(eta); final T f2 = f1.multiply(theta); final T f3 = f2.multiply(eta); final T f4 = f3.multiply(theta); @@ -244,7 +243,7 @@ protected FieldODEStateAndDerivative computeInterpolatedStateAndDerivatives(f final T[] p = MathArrays.buildArray(time.getField(), 16); final T[] q = MathArrays.buildArray(time.getField(), 16); for (int i = 0; i < p.length; ++i) { - p[i] = f0.multiply(d[0][i]). + p[i] = thetaH.multiply(d[0][i]). add(f1.multiply(d[1][i])). add(f2.multiply(d[2][i])). add(f3.multiply(d[3][i])). diff --git a/src/main/java/org/apache/commons/math4/ode/nonstiff/LutherFieldStepInterpolator.java b/src/main/java/org/apache/commons/math4/ode/nonstiff/LutherFieldStepInterpolator.java index df5ea6a25a..75618e221d 100644 --- a/src/main/java/org/apache/commons/math4/ode/nonstiff/LutherFieldStepInterpolator.java +++ b/src/main/java/org/apache/commons/math4/ode/nonstiff/LutherFieldStepInterpolator.java @@ -193,26 +193,24 @@ protected FieldODEStateAndDerivative computeInterpolatedStateAndDerivatives(f if (getGlobalPreviousState() != null && theta.getReal() <= 0.5) { - final T s = thetaH; - final T coeff1 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 21 / 5.0).add( -47 / 4.0)).add( 12 )).add( -27 / 5.0)).add(1)); + final T coeff1 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 21 / 5.0).add( -47 / 4.0)).add( 12 )).add( -27 / 5.0)).add(1)); final T coeff2 = time.getField().getZero(); - final T coeff3 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 112 / 5.0).add(-152 / 3.0)).add( 320 / 9.0 )).add(-104 / 15.0))); - final T coeff4 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(-567 / 25.0).add( 243 / 5.0)).add( -162 / 5.0 )).add( 162 / 25.0))); - final T coeff5 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(c5a.divide(25)).add(c5b.divide(60))).add(c5c.divide(90))).add(c5d.divide(300)))); - final T coeff6 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(c6a.divide(25)).add(c6b.divide(60))).add(c6c.divide(90))).add(c6d.divide(300)))); - final T coeff7 = s.multiply(theta.multiply(theta.multiply(theta.multiply( 3 / 4.0 ).add( -1 )).add( 3 / 10.0))); + final T coeff3 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 112 / 5.0).add(-152 / 3.0)).add( 320 / 9.0 )).add(-104 / 15.0))); + final T coeff4 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(-567 / 25.0).add( 243 / 5.0)).add( -162 / 5.0 )).add( 162 / 25.0))); + final T coeff5 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(c5a.divide(25)).add(c5b.divide(60))).add(c5c.divide(90))).add(c5d.divide(300)))); + final T coeff6 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(c6a.divide(25)).add(c6b.divide(60))).add(c6c.divide(90))).add(c6d.divide(300)))); + final T coeff7 = thetaH.multiply(theta.multiply(theta.multiply(theta.multiply( 3 / 4.0 ).add( -1 )).add( 3 / 10.0))); interpolatedState = previousStateLinearCombination(coeff1, coeff2, coeff3, coeff4, coeff5, coeff6, coeff7); interpolatedDerivatives = derivativeLinearCombination(coeffDot1, coeffDot2, coeffDot3, coeffDot4, coeffDot5, coeffDot6, coeffDot7); } else { - final T s = oneMinusThetaH; - final T coeff1 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( -21 / 5.0).add( 151 / 20.0)).add( -89 / 20.0)).add( 19 / 20.0)).add(- 1 / 20.0)); + final T coeff1 = oneMinusThetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( -21 / 5.0).add( 151 / 20.0)).add( -89 / 20.0)).add( 19 / 20.0)).add(- 1 / 20.0)); final T coeff2 = time.getField().getZero(); - final T coeff3 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(-112 / 5.0).add( 424 / 15.0)).add( -328 / 45.0)).add( -16 / 45.0)).add(-16 / 45.0)); - final T coeff4 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 567 / 25.0).add( -648 / 25.0)).add( 162 / 25.0)))); - final T coeff5 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(d5a.divide(25)).add(d5b.divide(300))).add(d5c.divide(900))).add( -49 / 180.0)).add(-49 / 180.0)); - final T coeff6 = s.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(d6a.divide(25)).add(d6b.divide(300))).add(d6c.divide(900))).add( -49 / 180.0)).add(-49 / 180.0)); - final T coeff7 = s.multiply( theta.multiply(theta.multiply(theta.multiply( -3 / 4.0 ).add( 1 / 4.0)).add( -1 / 20.0)).add( -1 / 20.0)); + final T coeff3 = oneMinusThetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(-112 / 5.0).add( 424 / 15.0)).add( -328 / 45.0)).add( -16 / 45.0)).add(-16 / 45.0)); + final T coeff4 = oneMinusThetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply( 567 / 25.0).add( -648 / 25.0)).add( 162 / 25.0)))); + final T coeff5 = oneMinusThetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(d5a.divide(25)).add(d5b.divide(300))).add(d5c.divide(900))).add( -49 / 180.0)).add(-49 / 180.0)); + final T coeff6 = oneMinusThetaH.multiply(theta.multiply(theta.multiply(theta.multiply(theta.multiply(d6a.divide(25)).add(d6b.divide(300))).add(d6c.divide(900))).add( -49 / 180.0)).add(-49 / 180.0)); + final T coeff7 = oneMinusThetaH.multiply( theta.multiply(theta.multiply(theta.multiply( -3 / 4.0 ).add( 1 / 4.0)).add( -1 / 20.0)).add( -1 / 20.0)); interpolatedState = currentStateLinearCombination(coeff1, coeff2, coeff3, coeff4, coeff5, coeff6, coeff7); interpolatedDerivatives = derivativeLinearCombination(coeffDot1, coeffDot2, coeffDot3, coeffDot4, coeffDot5, coeffDot6, coeffDot7); } diff --git a/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/LineSearch.java b/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/LineSearch.java index 8b8bcc671d..d515a75650 100644 --- a/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/LineSearch.java +++ b/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/LineSearch.java @@ -119,8 +119,7 @@ public double value(double alpha) { for (int i = 0; i < n; i++) { x[i] = startPoint[i] + alpha * direction[i]; } - final double obj = mainOptimizer.computeObjectiveValue(x); - return obj; + return mainOptimizer.computeObjectiveValue(x); } }; diff --git a/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/noderiv/BOBYQAOptimizer.java b/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/noderiv/BOBYQAOptimizer.java index 26f6be1cc3..2f3b48b221 100644 --- a/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/noderiv/BOBYQAOptimizer.java +++ b/src/main/java/org/apache/commons/math4/optim/nonlinear/scalar/noderiv/BOBYQAOptimizer.java @@ -1818,7 +1818,6 @@ private double[] trsbox( printMethod(); // XXX final int n = currentBest.getDimension(); - final int npt = numberOfInterpolationPoints; double dsq = Double.NaN; double crvmin = Double.NaN; @@ -2258,7 +2257,7 @@ private double[] trsbox( } } final RealVector tmp = interpolationPoints.operate(s).ebeMultiply(modelSecondDerivativesParameters); - for (int k = 0; k < npt; k++) { + for (int k = 0; k < numberOfInterpolationPoints; k++) { if (modelSecondDerivativesParameters.getEntry(k) != ZERO) { for (int i = 0; i < n; i++) { hs.setEntry(i, hs.getEntry(i) + tmp.getEntry(k) * interpolationPoints.getEntry(k, i)); diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java index 7218d750e3..bbfd22814e 100644 --- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java +++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Kurtosis.java @@ -183,12 +183,11 @@ public double evaluate(final double[] values, final int begin, final int length) accum3 /= FastMath.pow(stdDev, 4.0d); // Get N - double n0 = length; double coefficientOne = - (n0 * (n0 + 1)) / ((n0 - 1) * (n0 - 2) * (n0 - 3)); + ((double) length * ((double) length + 1)) / (((double) length - 1) * ((double) length - 2) * ((double) length - 3)); double termTwo = - (3 * FastMath.pow(n0 - 1, 2.0)) / ((n0 - 2) * (n0 - 3)); + (3 * FastMath.pow((double) length - 1, 2.0)) / (((double) length - 2) * ((double) length - 3)); // Calculate kurtosis kurt = (coefficientOne * accum3) - termTwo; diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Mean.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Mean.java index 2503039749..7b5b720bac 100644 --- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Mean.java +++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Mean.java @@ -165,17 +165,16 @@ public double evaluate(final double[] values, final int begin, final int length) if (MathArrays.verifyValues(values, begin, length)) { Sum sum = new Sum(); - double sampleSize = length; // Compute initial estimate using definitional formula - double xbar = sum.evaluate(values, begin, length) / sampleSize; + double xbar = sum.evaluate(values, begin, length) / (double) length; // Compute correction factor in second pass double correction = 0; for (int i = begin; i < begin + length; i++) { correction += values[i] - xbar; } - return xbar + (correction/sampleSize); + return xbar + (correction/ (double) length); } return Double.NaN; } diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Skewness.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Skewness.java index ccdb32dfc8..2e698044ef 100644 --- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Skewness.java +++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Skewness.java @@ -190,10 +190,9 @@ public double evaluate(final double[] values,final int begin, final int length) accum3 /= variance * FastMath.sqrt(variance); // Get N - double n0 = length; // Calculate skewness - skew = (n0 / ((n0 - 1) * (n0 - 2))) * accum3; + skew = ((double) length / (((double) length - 1) * ((double) length - 2))) * accum3; } return skew; } diff --git a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java index ece6702783..d164b1ab99 100644 --- a/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java +++ b/src/main/java/org/apache/commons/math4/stat/descriptive/moment/Variance.java @@ -418,11 +418,10 @@ public double evaluate(final double[] values, final double mean, accum += dev * dev; accum2 += dev; } - double len = length; if (isBiasCorrected) { - var = (accum - (accum2 * accum2 / len)) / (len - 1.0); + var = (accum - (accum2 * accum2 / (double) length)) / ((double) length - 1.0); } else { - var = (accum - (accum2 * accum2 / len)) / len; + var = (accum - (accum2 * accum2 / (double) length)) / (double) length; } } } diff --git a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java index 4a670cbc10..ff2dbff9f1 100644 --- a/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java +++ b/src/main/java/org/apache/commons/math4/stat/inference/KolmogorovSmirnovTest.java @@ -163,14 +163,13 @@ public double kolmogorovSmirnovTest(ContinuousDistribution distribution, double[ public double kolmogorovSmirnovStatistic(ContinuousDistribution distribution, double[] data) { checkArray(data); final int n = data.length; - final double nd = n; final double[] dataCopy = new double[n]; System.arraycopy(data, 0, dataCopy, 0, n); Arrays.sort(dataCopy); double d = 0d; for (int i = 1; i <= n; i++) { final double yi = distribution.cumulativeProbability(dataCopy[i - 1]); - final double currD = FastMath.max(yi - (i - 1) / nd, i / nd - yi); + final double currD = FastMath.max(yi - (i - 1) / (double) n, i / (double) n - yi); if (currD > d) { d = currD; } @@ -962,9 +961,7 @@ public double exactP(double d, int n, int m, boolean strict) { * \(D_{n,m}\) greater than {@code d} */ public double approximateP(double d, int n, int m) { - final double dm = m; - final double dn = n; - return 1 - ksSum(d * FastMath.sqrt((dm * dn) / (dm + dn)), + return 1 - ksSum(d * FastMath.sqrt(((double) m * (double) n) / ((double) m + (double) n)), KS_SUM_CAUCHY_CRITERION, MAXIMUM_PARTIAL_SUM_COUNT); } diff --git a/src/main/java/org/apache/commons/math4/util/FastMath.java b/src/main/java/org/apache/commons/math4/util/FastMath.java index 4d0568a321..a7ae91e5d7 100644 --- a/src/main/java/org/apache/commons/math4/util/FastMath.java +++ b/src/main/java/org/apache/commons/math4/util/FastMath.java @@ -674,8 +674,6 @@ public static double tanh(double x) { double yb = -(ya - hiPrec[0] - hiPrec[1]); /* Numerator */ - double na = ya; - double nb = yb; /* Denominator */ double da = 2.0 + ya; @@ -689,18 +687,18 @@ public static double tanh(double x) { double dab = da - daa; // ratio = na/da - double ratio = na/da; + double ratio = ya /da; temp = ratio * HEX_40000000; double ratioa = ratio + temp - temp; double ratiob = ratio - ratioa; // Correct for rounding in division - ratiob += (na - daa*ratioa - daa*ratiob - dab*ratioa - dab*ratiob) / da; + ratiob += (ya - daa*ratioa - daa*ratiob - dab*ratioa - dab*ratiob) / da; // Account for nb - ratiob += nb / da; + ratiob += yb / da; // Account for db - ratiob += -db * na / da / da; + ratiob += -db * ya / da / da; result = ratioa + ratiob; } @@ -1596,9 +1594,8 @@ public static double pow(final double x, final double y) { z = z * lnb + 1.0; z *= lnb; - final double result = exp(lna, z, null); //result = result + result * z; - return result; + return exp(lna, z, null); } } @@ -2791,9 +2788,8 @@ public static double atan2(double y, double x) { } // Call atan - final double result = atan(ra, rb, x < 0); - return result; + return atan(ra, rb, x < 0); } /** Compute the arc sine of a number.