hungarian_algorithm_c 0.0.2 → 0.0.3

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: a54ee73466778776258aa0601cd5a7f8c0ff8ae6
4
- data.tar.gz: 66cfd028102d917ef159e45fda5836a9128d4dfa
3
+ metadata.gz: daf9bc75e8c20f1067c5bdc4aee13b650d96b90c
4
+ data.tar.gz: 2283bba92d3a9c8d96e006fde88ead8ae363e798
5
5
  SHA512:
6
- metadata.gz: cd8765887857a796dcedbf341058dd9630028762b37bafd3d5c16a3b3e0cf9edb605c1d3ee80374ef8971ec00c7c4df2fca70cc1a2cc7abf98a5020efa1d1381
7
- data.tar.gz: fed0e9c37a870840477081d59beb4871cc0cb921decdc9bc025c7f92c3ccf530a00e8039adb894278e6d87e6764b9db12b97910626eea7e7e187dfb202dbadb1
6
+ metadata.gz: 9ddc4a8d3a594d644e50b1f6ca82d0baa692ea88f0c4ab034f4c1efb97e5de280e1830faf442a4b77c71806a31ec9c89bac2e00a15f88d1319b7b58ec59871da
7
+ data.tar.gz: 72176924f4375d2dc5e63d562a89befeb0aa6f4d4ec30a60f27b40ba6dca40cc1582dac2a4bdc8b424b1d7c0542af3d22ba01275959a2d00a60f5b2d412c9cdc
data/README.md CHANGED
@@ -44,6 +44,8 @@ HungarianAlgorithmC.find_pairings(costs)
44
44
  #=> [[0, 0], [1, 2], [2, 1]]
45
45
  ```
46
46
 
47
+ **Note**: Your cost matrix should not have `Float::INFINITY` or _very very large_ numbers as those will not be interpreted appropriately [here](ext/hungarian_algorithm_c/hungarian_algorithm_c.c#L56).
48
+
47
49
  ## Acknowledgements
48
50
 
49
51
  The C code uses the implementation by [Cyrill Stachniss](ext/hungarian_algorithm_c/libhungarian).
@@ -53,7 +53,7 @@ VALUE pairs(VALUE self, VALUE flattened_array_ruby, VALUE row_size_val) {
53
53
 
54
54
  int index;
55
55
  for (index = 0; index < array_size; index++) {
56
- long double element = 100 * NUM2DBL(rb_ary_entry(flattened_array_ruby, index));
56
+ long double element = NUM2DBL(rb_ary_entry(flattened_array_ruby, index));
57
57
  long long int rounded_element = element;
58
58
  array_c[index] = rounded_element;
59
59
  }
@@ -1,3 +1,3 @@
1
1
  module HungarianAlgorithmC
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -25,6 +25,17 @@ RSpec.describe HungarianAlgorithmC do
25
25
  [0, 0]
26
26
  ])
27
27
  end
28
+
29
+ context 'matrix contains Floa::INFINITY' do
30
+ let(:matrix_with_costs) { [
31
+ [4, 3],
32
+ [3, Float::INFINITY]
33
+ ] }
34
+
35
+ it 'should not crash' do
36
+ should be_a Array
37
+ end
38
+ end
28
39
  end
29
40
 
30
41
  context '3x3 array' do
@@ -41,22 +52,6 @@ RSpec.describe HungarianAlgorithmC do
41
52
  [2, 1]
42
53
  ])
43
54
  end
44
-
45
- context 'with very large numbers' do
46
- let(:matrix_with_costs) { [
47
- [4, 1, 7],
48
- [Float::INFINITY, 3, 9],
49
- [1, 2, 13]
50
- ] }
51
-
52
- it 'should output minimum cost pairs' do
53
- should match_array([
54
- [0, 2],
55
- [1, 0],
56
- [2, 1]
57
- ])
58
- end
59
- end
60
55
  end
61
56
 
62
57
  context '4x4 array' do
@@ -76,12 +71,12 @@ RSpec.describe HungarianAlgorithmC do
76
71
  ])
77
72
  end
78
73
 
79
- context 'with very large numbers' do
74
+ context 'with large numbers' do
80
75
  let(:matrix_with_costs) { [
81
- [Float::INFINITY, 3, 10000000000000000000000000000000000, 3],
82
- [10, 2, Float::INFINITY, 6],
83
- [10, 3, 34, Float::INFINITY],
84
- [99999999999999999999999, 13, 15, 6000000000000000]
76
+ [1_000_000, 2_000_000, 3, 3_000_000],
77
+ [9_000_000, 1, 4_000_000, 5_000_000],
78
+ [2_000_000, 1_000_000, 1_000_000, 4],
79
+ [1, 8_000_000, 3_000_000, 44]
85
80
  ] }
86
81
 
87
82
  it 'should output minimum cost pairs' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hungarian_algorithm_c
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Syed Humza Shah
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-04 00:00:00.000000000 Z
11
+ date: 2017-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler