Skip to content

Commit 74de3ef

Browse files
committed
8273514: java/util/DoubleStreamSums/CompensatedSums.java failure
Backport-of: f531b5c79633a12efa56c55366e0b7196350e896
1 parent 793d08a commit 74de3ef

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

test/jdk/java/util/DoubleStreamSums/CompensatedSums.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,8 @@
3232
import java.util.function.BiConsumer;
3333
import java.util.function.ObjDoubleConsumer;
3434
import java.util.function.Supplier;
35-
import java.util.stream.Collectors;
3635
import java.util.stream.DoubleStream;
3736

38-
import static org.testng.Assert.assertTrue;
39-
4037
import org.testng.Assert;
4138
import org.testng.annotations.Test;
4239

@@ -68,36 +65,38 @@ public void testCompensatedSums() {
6865
// Older less accurate implementations included here as the baseline.
6966

7067
// squared error of naive sum by reduction - should be large
71-
naive += Math.pow(DoubleStream.of(rand).reduce((x, y) -> x+y).getAsDouble() - sum[0], 2);
68+
naive += square(DoubleStream.of(rand).reduce((x, y) -> x+y).getAsDouble() - sum[0]);
7269

7370
// squared error of sequential sum - should be 0
74-
jdkSequentialStreamError += Math.pow(DoubleStream.of(rand).sum() - sum[0], 2);
71+
jdkSequentialStreamError += square(DoubleStream.of(rand).sum() - sum[0]);
7572

76-
goodSequentialStreamError += Math.pow(computeFinalSum(DoubleStream.of(rand).collect(doubleSupplier,objDoubleConsumer,goodCollectorConsumer)) - sum[0], 2);
73+
goodSequentialStreamError += square(computeFinalSum(DoubleStream.of(rand).collect(doubleSupplier,objDoubleConsumer,goodCollectorConsumer)) - sum[0]);
7774

7875
// squared error of parallel sum from the JDK
79-
jdkParallelStreamError += Math.pow(DoubleStream.of(rand).parallel().sum() - sum[0], 2);
76+
jdkParallelStreamError += square(DoubleStream.of(rand).parallel().sum() - sum[0]);
8077

8178
// squared error of parallel sum
82-
goodParallelStreamError += Math.pow(computeFinalSum(DoubleStream.of(rand).parallel().collect(doubleSupplier,objDoubleConsumer,goodCollectorConsumer)) - sum[0], 2);
79+
goodParallelStreamError += square(computeFinalSum(DoubleStream.of(rand).parallel().collect(doubleSupplier,objDoubleConsumer,goodCollectorConsumer)) - sum[0]);
8380

8481
// the bad parallel stream
85-
badParallelStreamError += Math.pow(computeFinalSum(DoubleStream.of(rand).parallel().collect(doubleSupplier,objDoubleConsumer,badCollectorConsumer)) - sum[0], 2);
82+
badParallelStreamError += square(computeFinalSum(DoubleStream.of(rand).parallel().collect(doubleSupplier,objDoubleConsumer,badCollectorConsumer)) - sum[0]);
8683

8784

8885
}
8986

90-
Assert.assertEquals(goodSequentialStreamError, 0.0);
91-
Assert.assertEquals(goodSequentialStreamError, jdkSequentialStreamError);
92-
9387
Assert.assertTrue(jdkParallelStreamError <= goodParallelStreamError);
94-
Assert.assertTrue(badParallelStreamError > goodParallelStreamError);
88+
Assert.assertTrue(badParallelStreamError > jdkParallelStreamError);
9589

90+
Assert.assertTrue(goodSequentialStreamError >= jdkSequentialStreamError);
9691
Assert.assertTrue(naive > jdkSequentialStreamError);
9792
Assert.assertTrue(naive > jdkParallelStreamError);
9893

9994
}
10095

96+
private static double square(double arg) {
97+
return arg * arg;
98+
}
99+
101100
// from OpenJDK8 Collectors, unmodified
102101
static double[] sumWithCompensation(double[] intermediateSum, double value) {
103102
double tmp = value - intermediateSum[1];

0 commit comments

Comments
 (0)