From 5a51d479582b0ad4f5b789c3fa0f1a4807ae7a29 Mon Sep 17 00:00:00 2001 From: Yang Li Date: Sat, 30 Apr 2016 07:13:07 +0800 Subject: [PATCH] Fix HyperLogLog incorrectness when cardinality is over billions --- .../clearspring/analytics/stream/cardinality/HyperLogLog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLog.java b/src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLog.java index 0e9e6800b..741eb14dc 100644 --- a/src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLog.java +++ b/src/main/java/com/clearspring/analytics/stream/cardinality/HyperLogLog.java @@ -169,7 +169,7 @@ public long cardinality() { double zeros = 0.0; for (int j = 0; j < registerSet.count; j++) { int val = registerSet.get(j); - registerSum += 1.0 / (1 << val); + registerSum += 1.0 / (1L << val); if (val == 0) { zeros++; }