hyperll 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/hyperll/hyper_log_log_plus.rb +9 -2
- data/lib/hyperll/version.rb +1 -1
- metadata +18 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92a2d971e950386e6482dffd805a62c0440e73f6
|
4
|
+
data.tar.gz: 37fc41caaf80eb69eae2b4745ff6c5013d4d6db8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 996aae58d31e7c758294b23d8257488e014890ea4610fae1c2c2f570fc76ecd320f032e6847faa11f01caec70ce0de3428c23f8f0970a1e185cc90f3bee68e73
|
7
|
+
data.tar.gz: 23d9a863527faafc92bd8fd075e33823d4909734c3ddc24d214683df50efe43a76b3e5126cd4d0f7463792305c0cdff13721b47ee82f3580d5e26ac2c24347d7
|
@@ -172,6 +172,8 @@ module Hyperll
|
|
172
172
|
end
|
173
173
|
end
|
174
174
|
end
|
175
|
+
|
176
|
+
self
|
175
177
|
end
|
176
178
|
|
177
179
|
def convert_to_normal
|
@@ -228,7 +230,7 @@ module Hyperll
|
|
228
230
|
if (k & 1) == 1
|
229
231
|
((k >> 1) & 63) ^ 63
|
230
232
|
else
|
231
|
-
number_of_leading_zeros((k
|
233
|
+
number_of_leading_zeros(encoded_hash(k)) + 1
|
232
234
|
end
|
233
235
|
end
|
234
236
|
|
@@ -317,7 +319,7 @@ module Hyperll
|
|
317
319
|
end
|
318
320
|
end
|
319
321
|
|
320
|
-
new_set
|
322
|
+
new_set.sort_by { |e| [e, sparse_index(e), encoded_hash(e)] }
|
321
323
|
end
|
322
324
|
|
323
325
|
def consume_duplicates(sparse_set, index, start)
|
@@ -332,6 +334,7 @@ module Hyperll
|
|
332
334
|
end
|
333
335
|
|
334
336
|
def sparse_index(k)
|
337
|
+
k = k & INT_MASK
|
335
338
|
if (k & 1) == 1
|
336
339
|
k >> 7
|
337
340
|
else
|
@@ -339,6 +342,10 @@ module Hyperll
|
|
339
342
|
end
|
340
343
|
end
|
341
344
|
|
345
|
+
def encoded_hash(k)
|
346
|
+
(k << (p + (31 - sp))) & INT_MASK
|
347
|
+
end
|
348
|
+
|
342
349
|
def number_of_leading_zeros(int)
|
343
350
|
-(Math.log2(int).to_i - 31)
|
344
351
|
end
|
data/lib/hyperll/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperll
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Lindeman
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2013-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
|
-
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
|
-
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
23
|
requirements:
|
22
24
|
- - ~>
|
23
25
|
- !ruby/object:Gem::Version
|
24
26
|
version: '1.3'
|
25
|
-
prerelease: false
|
26
|
-
type: :development
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
|
-
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
|
-
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
37
|
requirements:
|
36
38
|
- - '>='
|
37
39
|
- !ruby/object:Gem::Version
|
38
40
|
version: '0'
|
39
|
-
prerelease: false
|
40
|
-
type: :development
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
|
-
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.14'
|
48
|
-
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
51
|
requirements:
|
50
52
|
- - ~>
|
51
53
|
- !ruby/object:Gem::Version
|
52
54
|
version: '2.14'
|
53
|
-
prerelease: false
|
54
|
-
type: :development
|
55
55
|
description: HyperLogLog implementation in pure Ruby
|
56
56
|
email:
|
57
57
|
- andy@andylindeman.com
|
@@ -86,7 +86,7 @@ homepage: https://github.com/alindeman/hyperll
|
|
86
86
|
licenses:
|
87
87
|
- MIT
|
88
88
|
metadata: {}
|
89
|
-
post_install_message:
|
89
|
+
post_install_message:
|
90
90
|
rdoc_options: []
|
91
91
|
require_paths:
|
92
92
|
- lib
|
@@ -101,9 +101,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
|
-
rubyforge_project:
|
105
|
-
rubygems_version: 2.
|
106
|
-
signing_key:
|
104
|
+
rubyforge_project:
|
105
|
+
rubygems_version: 2.0.3
|
106
|
+
signing_key:
|
107
107
|
specification_version: 4
|
108
108
|
summary: HyperLogLog implementation in pure Ruby
|
109
109
|
test_files:
|