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 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: