hyperll 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|