From 112567ad3af6009e01b9c6a59ac52dbb4762a036 Mon Sep 17 00:00:00 2001 From: Otmar Ertl Date: Fri, 15 Dec 2023 08:30:10 +0100 Subject: [PATCH] use strictfp in test --- .../com/dynatrace/hash4j/distinctcount/BigInt.java | 4 ++-- .../dynatrace/hash4j/distinctcount/TestUtils.java | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/test/java/com/dynatrace/hash4j/distinctcount/BigInt.java b/src/test/java/com/dynatrace/hash4j/distinctcount/BigInt.java index 64f09f0c..cebc3fd9 100644 --- a/src/test/java/com/dynatrace/hash4j/distinctcount/BigInt.java +++ b/src/test/java/com/dynatrace/hash4j/distinctcount/BigInt.java @@ -82,7 +82,7 @@ public static BigInt ceil(double d) { return fromIntDouble(Math.ceil(d)); } - private static BigInt fromIntDouble(double d) { + private static strictfp BigInt fromIntDouble(double d) { checkArgument(d < TWO_POW_PLUS_126_DOUBLE); if (d >= TWO_POW_PLUS_63_DOUBLE) { long high = (long) (d * TWO_POW_MINUS_63_DOUBLE); @@ -93,7 +93,7 @@ private static BigInt fromIntDouble(double d) { } } - public double asDouble() { + public strictfp double asDouble() { return high * TWO_POW_PLUS_63_DOUBLE + low; } diff --git a/src/test/java/com/dynatrace/hash4j/distinctcount/TestUtils.java b/src/test/java/com/dynatrace/hash4j/distinctcount/TestUtils.java index 83caf4e1..e6329505 100644 --- a/src/test/java/com/dynatrace/hash4j/distinctcount/TestUtils.java +++ b/src/test/java/com/dynatrace/hash4j/distinctcount/TestUtils.java @@ -26,26 +26,27 @@ public final class TestUtils { private TestUtils() {} - public static long[] getDistinctCountValues(long min, long max, double relativeIncrement) { + public static strictfp long[] getDistinctCountValues( + long min, long max, double relativeIncrement) { List distinctCounts = new ArrayList<>(); - for (long c = max; - c >= min; - c = Math.min(c - 1, (long) Math.ceil(c / (1. + relativeIncrement)))) { + final double factor = 1. / (1. + relativeIncrement); + for (long c = max; c >= min; c = Math.min(c - 1, (long) Math.ceil(c * factor))) { distinctCounts.add(c); } Collections.reverse(distinctCounts); return distinctCounts.stream().mapToLong(Long::valueOf).toArray(); } - public static List getDistinctCountValues(double max, double relativeIncrement) { + public static strictfp List getDistinctCountValues(double max, double relativeIncrement) { checkArgument(max >= 1.); List distinctCounts = new ArrayList<>(); BigInt c = BigInt.ceil(max); + final double factor = 1. / (1. + relativeIncrement); while (c.isPositive()) { distinctCounts.add(c.copy()); double d = c.asDouble(); c.decrement(); - c.min(BigInt.ceil(d / (1. + relativeIncrement))); + c.min(BigInt.ceil(d * factor)); } Collections.reverse(distinctCounts); return distinctCounts;