CPD Results
The following document contains the results of PMD's CPD 7.3.0.
Duplications
File |
Line |
org/apache/commons/statistics/descriptive/IntStatistics.java |
544 |
org/apache/commons/statistics/descriptive/LongStatistics.java |
522 |
stat = Statistics.getResultAsIntOrNull(min);
break;
case PRODUCT:
stat = Statistics.getResultAsDoubleOrNull(product);
break;
case SKEWNESS:
stat = getSkewness();
break;
case STANDARD_DEVIATION:
stat = getStandardDeviation();
break;
case SUM:
stat = Statistics.getResultAsBigIntegerOrNull(sum);
break;
case SUM_OF_LOGS:
stat = Statistics.getResultAsDoubleOrNull(sumOfLogs);
break;
case SUM_OF_SQUARES:
stat = Statistics.getResultAsBigIntegerOrNull(sumOfSquares);
break;
case VARIANCE:
stat = getVariance();
break;
default:
break;
}
if (stat != null) {
return stat;
}
throw new IllegalArgumentException(UNSUPPORTED_STATISTIC + statistic);
}
/**
* Gets the geometric mean.
*
* @return a geometric mean supplier (or null if unsupported)
*/
private StatisticResult getGeometricMean() {
if (sumOfLogs != null) {
// Return a function that has access to the count and sumOfLogs
return () -> GeometricMean.computeGeometricMean(count, sumOfLogs);
}
return null;
}
/**
* Gets the kurtosis.
*
* @return a kurtosis supplier (or null if unsupported)
*/
private StatisticResult getKurtosis() {
if (moment instanceof SumOfFourthDeviations) {
return new Kurtosis((SumOfFourthDeviations) moment)
.setBiased(config.isBiased())::getAsDouble;
}
return null;
}
/**
* Gets the mean.
*
* @return a mean supplier (or null if unsupported)
*/
private StatisticResult getMean() {
if (sum != null) {
// Return a function that has access to the count and sum
final Int128 s = sum.getSum();
return () -> IntMean.computeMean(s, count); |
File |
Line |
org/apache/commons/statistics/descriptive/DoubleStatistics.java |
624 |
org/apache/commons/statistics/descriptive/IntStatistics.java |
681 |
org/apache/commons/statistics/descriptive/LongStatistics.java |
659 |
public DoubleStatistics combine(DoubleStatistics other) {
// Check compatibility
Statistics.checkCombineCompatible(min, other.min);
Statistics.checkCombineCompatible(max, other.max);
Statistics.checkCombineCompatible(sum, other.sum);
Statistics.checkCombineCompatible(product, other.product);
Statistics.checkCombineCompatible(sumOfSquares, other.sumOfSquares);
Statistics.checkCombineCompatible(sumOfLogs, other.sumOfLogs);
Statistics.checkCombineAssignable(moment, other.moment);
// Combine
count += other.count;
Statistics.combine(min, other.min);
Statistics.combine(max, other.max);
Statistics.combine(sum, other.sum);
Statistics.combine(product, other.product);
Statistics.combine(sumOfSquares, other.sumOfSquares);
Statistics.combine(sumOfLogs, other.sumOfLogs);
Statistics.combineMoment(moment, other.moment);
return this;
}
/**
* Sets the statistics configuration.
*
* <p>These options only control the final computation of statistics. The configuration
* will not affect compatibility between instances during a
* {@link #combine(DoubleStatistics) combine} operation.
*
* <p>Note: These options will affect any future computation of statistics. Supplier functions
* that have been previously created will not be updated with the new configuration.
*
* @param v Value.
* @return {@code this} instance
* @throws NullPointerException if the value is null
* @see #getResult(Statistic)
*/
public DoubleStatistics setConfiguration(StatisticsConfiguration v) { |
File |
Line |
org/apache/commons/statistics/descriptive/IntStatistics.java |
377 |
org/apache/commons/statistics/descriptive/LongStatistics.java |
377 |
public void accept(int value) {
count++;
consumer.accept(value);
}
/**
* Return the count of values recorded.
*
* @return the count of values
*/
public long getCount() {
return count;
}
/**
* Check if the specified {@code statistic} is supported.
*
* <p>Note: This method will not return {@code false} if the argument is {@code null}.
*
* @param statistic Statistic.
* @return {@code true} if supported
* @throws NullPointerException if the {@code statistic} is {@code null}
* @see #getResult(Statistic)
*/
public boolean isSupported(Statistic statistic) {
// Check for the appropriate underlying implementation
switch (statistic) {
case GEOMETRIC_MEAN:
case SUM_OF_LOGS:
return sumOfLogs != null;
case KURTOSIS:
return moment instanceof SumOfFourthDeviations;
case MAX:
return max != null;
case MIN:
return min != null;
case PRODUCT:
return product != null;
case SKEWNESS:
return moment instanceof SumOfCubedDeviations;
case STANDARD_DEVIATION:
case VARIANCE:
return sum != null && sumOfSquares != null;
case MEAN:
case SUM:
return sum != null;
case SUM_OF_SQUARES:
return sumOfSquares != null;
default:
return false;
}
}
/**
* Gets the value of the specified {@code statistic} as a {@code double}.
*
* @param statistic Statistic.
* @return the value
* @throws IllegalArgumentException if the {@code statistic} is not supported
* @see #isSupported(Statistic)
* @see #getResult(Statistic)
*/
public double getAsDouble(Statistic statistic) {
return getResult(statistic).getAsDouble();
}
/**
* Gets the value of the specified {@code statistic} as an {@code int}.
*
* <p>Use this method to access the {@code int} result for exact integer statistics,
* for example {@link Statistic#MIN}.
*
* <p>Note: This method may throw an {@link ArithmeticException} if the result
* overflows an {@code int}.
*
* @param statistic Statistic.
* @return the value
* @throws IllegalArgumentException if the {@code statistic} is not supported
* @throws ArithmeticException if the {@code result} overflows an {@code int} or is not
* finite
* @see #isSupported(Statistic)
* @see #getResult(Statistic)
*/
public int getAsInt(Statistic statistic) { |
File |
Line |
org/apache/commons/statistics/descriptive/Median.java |
149 |
org/apache/commons/statistics/descriptive/Median.java |
190 |
final double t = x[0];
x[0] = x[1];
x[1] = t;
}
return Interpolation.mean(x[0], x[1]);
case 1:
return x[0];
default:
return Double.NaN;
}
}
// Median index
final int m = n >>> 1;
// Odd
if ((n & 0x1) == 1) {
Selection.select(x, 0, n, m);
return x[m];
}
// Even: require (m-1, m)
Selection.select(x, 0, n, new int[] {m - 1, m});
return Interpolation.mean(x[m - 1], x[m]);
} |
File |
Line |
org/apache/commons/statistics/descriptive/IntStandardDeviation.java |
122 |
org/apache/commons/statistics/descriptive/IntVariance.java |
124 |
final IntStandardDeviation stat = new IntStandardDeviation();
for (final int x : values) {
stat.accept(x);
}
return stat;
}
// Arrays can be processed using specialised counts knowing the maximum limit
// for an array is 2^31 values.
long s = 0;
final UInt96 ss = UInt96.create();
// Process pairs as we know two maximum value int^2 will not overflow
// an unsigned long.
final int end = values.length & ~0x1;
for (int i = 0; i < end; i += 2) {
final long x = values[i];
final long y = values[i + 1];
s += x + y;
ss.addPositive(x * x + y * y);
}
if (end < values.length) {
final long x = values[end];
s += x;
ss.addPositive(x * x);
}
// Convert
return new IntStandardDeviation(UInt128.of(ss), Int128.of(s), values.length); |
File |
Line |
org/apache/commons/statistics/descriptive/DoubleStatistics.java |
315 |
org/apache/commons/statistics/descriptive/IntStatistics.java |
302 |
org/apache/commons/statistics/descriptive/LongStatistics.java |
302 |
public static DoubleStatistics of(Set<Statistic> statistics, double... values) {
if (statistics.isEmpty()) {
throw new IllegalArgumentException(NO_CONFIGURED_STATISTICS);
}
final Builder b = new Builder();
statistics.forEach(b::add);
return b.build(values);
}
/**
* Returns a new builder configured to create instances to compute the specified
* {@code statistics}.
*
* <p>Use this method to create an instance populated with an array of {@code double[]}
* data using the {@link Builder#build(double...)} method:
*
* <pre>
* double[] data = ...
* DoubleStatistics stats = DoubleStatistics.builder(
* Statistic.MIN, Statistic.MAX, Statistic.VARIANCE)
* .build(data);
* </pre>
*
* <p>The builder can be used to create multiple instances of {@link DoubleStatistics}
* to be used in parallel, or on separate arrays of {@code double[]} data. These may
* be {@link #combine(DoubleStatistics) combined}. For example:
*
* <pre>
* double[][] data = ...
* DoubleStatistics.Builder builder = DoubleStatistics.builder(
* Statistic.MIN, Statistic.MAX, Statistic.VARIANCE);
* DoubleStatistics stats = Arrays.stream(data)
* .parallel()
* .map(builder::build)
* .reduce(DoubleStatistics::combine)
* .get();
* </pre>
*
* <p>The builder can be used to create a {@link java.util.stream.Collector} for repeat
* use on multiple data:
*
* <pre>{@code
* DoubleStatistics.Builder builder = DoubleStatistics.builder(
* Statistic.MIN, Statistic.MAX, Statistic.VARIANCE);
* Collector<double[], DoubleStatistics, DoubleStatistics> collector =
* Collector.of(builder::build,
* (s, d) -> s.combine(builder.build(d)),
* DoubleStatistics::combine);
*
* // Repeated
* double[][] data = ...
* DoubleStatistics stats = Arrays.stream(data).collect(collector);
* }</pre>
*
* @param statistics Statistics to compute.
* @return the builder
* @throws IllegalArgumentException if there are no {@code statistics} to compute.
*/
public static Builder builder(Statistic... statistics) {
if (statistics.length == 0) {
throw new IllegalArgumentException(NO_CONFIGURED_STATISTICS);
}
final Builder b = new Builder();
for (final Statistic s : statistics) {
b.add(s);
}
return b;
}
/**
* Updates the state of the statistics to reflect the addition of {@code value}.
*
* @param value Value.
*/
@Override
public void accept(double value) { |
File |
Line |
org/apache/commons/statistics/descriptive/IntStatistics.java |
611 |
org/apache/commons/statistics/descriptive/LongStatistics.java |
589 |
return () -> IntMean.computeMean(s, count);
}
return null;
}
/**
* Gets the skewness.
*
* @return a skewness supplier (or null if unsupported)
*/
private StatisticResult getSkewness() {
if (moment instanceof SumOfCubedDeviations) {
return new Skewness((SumOfCubedDeviations) moment)
.setBiased(config.isBiased())::getAsDouble;
}
return null;
}
/**
* Gets the standard deviation.
*
* @return a standard deviation supplier (or null if unsupported)
*/
private StatisticResult getStandardDeviation() {
return getVarianceOrStd(true);
}
/**
* Gets the variance.
*
* @return a variance supplier (or null if unsupported)
*/
private StatisticResult getVariance() {
return getVarianceOrStd(false);
}
/**
* Gets the variance or standard deviation.
*
* @param std Flag to control if the statistic is the standard deviation.
* @return a variance/standard deviation supplier (or null if unsupported)
*/
private StatisticResult getVarianceOrStd(boolean std) {
if (sum != null && sumOfSquares != null) {
// Return a function that has access to the count, sum and sum of squares
final Int128 s = sum.getSum();
final UInt128 ss = sumOfSquares.getSumOfSquares(); |
|