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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5fde20f1294d29f01337a6ef65af833cb0f6d0f6
4
- data.tar.gz: cec1fca655e5b953323490558623f6020f7e0a93
3
+ metadata.gz: 92a2d971e950386e6482dffd805a62c0440e73f6
4
+ data.tar.gz: 37fc41caaf80eb69eae2b4745ff6c5013d4d6db8
5
5
  SHA512:
6
- metadata.gz: b3a9f0e91e502b9306dba43c6853ac9707374d4c68365feefe5115a341ccb5c5af0b6c2f9141038fc6127146873d19118efb9eddd4044e3c0e06edb11891b47c
7
- data.tar.gz: d98c9a44979c962c362130d4961f6cb68bd66b27986d76fdd7411abfb9f349b4daf3c7d536685839894149365f36de153f087881704cb5896a3355c8fa920f43
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 << (p + (31 - sp))) & INT_MASK) + 1
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
@@ -1,3 +1,3 @@
1
1
  module Hyperll
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
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.3
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
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.3'
20
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.14'
48
- requirement: !ruby/object:Gem::Requirement
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.1.5
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: