Method: Hyperll::HyperLogLog#cardinality
- Defined in:
- lib/hyperll/hyper_log_log.rb
#cardinality ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/hyperll/hyper_log_log.rb', line 45 def cardinality register_sum = 0.0 zeros = 0.0 @register_set.each do |value| register_sum += 1.0 / (1 << value) zeros += 1 if value == 0 end estimate = @alphaMM * (1 / register_sum) if estimate <= (5.0 / 2.0) * @count # small range estimate (@count * Math.log(@count / zeros)).round else estimate.round end end |