dither 0.2.0.rc5-java → 0.2.1-java

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: e375f73de29cf2973902fa32746da23ec5b3d04c
4
- data.tar.gz: d0934babd6665c4c710be50b62991af2f0cb6385
3
+ metadata.gz: 3a987783363aa9b53be68e9b15beb1fae453985e
4
+ data.tar.gz: e207f2588859e02213785fea494d02bc8d75af72
5
5
  SHA512:
6
- metadata.gz: da0bef56fb262a62bd17070f611523a5a389cfb24c23252a26790f3da8ee046379520062d4f6862c2201d51592d959d3756f48d34177ac90a58c38b4d7278aa5
7
- data.tar.gz: cf8c34f22d78dac20e0e68961cf8b2f43c7b6409c54131ef62625ab269a90790e01d755ac558cba3abaabac72ec8cb39c4153f2e15b811330f2276b7591fc554
6
+ metadata.gz: 04cdb9b5a5d9fa432daeb000a4efc4297d990581d351da6f3b5cc774c864d0043a7daea53abe436b36d50e051189927a2c5cad9bbd072b138a920cd979c5528c
7
+ data.tar.gz: 00f0c16140b9726118fe75c9caf333bde02e43e00fce6ee369acbcfa3f3baa5291431541193169b017ea8bb2c24457ced00f1bf45b723b66ec567906654b38d8
data/dither.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |s|
24
24
  if RUBY_PLATFORM =~ /java/
25
25
  s.platform = "java"
26
26
  # compile dither-java on jdk 8
27
- files << "lib/dither-0.1.4.jar"
27
+ files << "lib/dither-0.1.5.jar"
28
28
  files << "lib/choco-solver-3.3.1-with-dependencies.jar"
29
29
  else
30
30
  s.add_dependency "ffi", "~> 1.0"
@@ -122,6 +122,75 @@ inline void product(
122
122
  rvi.pop_back(); // clean ME off for next round
123
123
  }
124
124
  }
125
+
126
+ inline void product3(
127
+ std::forward_list<dtest_case>& results,
128
+ std::vector<dtest_case>::const_iterator begin,
129
+ std::vector<dtest_case>::const_iterator end) {
130
+ dtest_case ranges;
131
+ for(auto it = begin; it != end; ++it) {
132
+ const dval tmp = (*it).size() - 1;
133
+ ranges.push_back(tmp);
134
+ }
135
+
136
+ dtest_case scratch(ranges.size(), 0);
137
+
138
+ const std::size_t max = ranges.size() - 1;
139
+ for(std::size_t i = max;;) {
140
+
141
+ if(i == max) {
142
+ for(dval val = 0; val <= ranges[i]; val++) {
143
+ results.push_front(scratch);
144
+ scratch[i]++;
145
+ }
146
+ scratch[i] = 0;
147
+ i--;
148
+ } else if(i == 0 && scratch[i] >= ranges[i]) {
149
+ return;
150
+ } else if(scratch[i] < ranges[i]) {
151
+ scratch[i]++;
152
+ i++;
153
+ } else {
154
+ scratch[i] = -1;
155
+ i--;
156
+ }
157
+ }
158
+ }
159
+
160
+ inline void product4(
161
+ std::forward_list<std::vector<param>>& results,
162
+ std::vector<std::vector<param>>& param_matrix) {
163
+ std::vector<int> ranges;
164
+ std::vector<param> scratch;
165
+ for(auto params : param_matrix) {
166
+ ranges.push_back(params.size() - 1);
167
+ scratch.push_back(params[0]);
168
+ }
169
+ std::vector<int> indexes(scratch.size(), 0);
170
+
171
+ const std::size_t max = ranges.size() - 1;
172
+ for(std::size_t i = max;;) {
173
+
174
+ if(i == max) {
175
+ for(std::size_t val = 0; val <= ranges[i]; val++) {
176
+ scratch[i] = param_matrix[i][indexes[i]];
177
+ results.push_front(scratch);
178
+ indexes[i]++;
179
+ }
180
+ indexes[i] = 0;
181
+ i--;
182
+ } else if(i == 0 && indexes[i] >= ranges[i]) {
183
+ return;
184
+ } else if(indexes[i] < ranges[i]) {
185
+ indexes[i]++;
186
+ scratch[i] = param_matrix[i][indexes[i]];
187
+ i++;
188
+ } else {
189
+ indexes[i] = -1;
190
+ i--;
191
+ }
192
+ }
193
+ }
125
194
  }
126
195
 
127
196
  #endif
data/ext/dither/ipog.cc CHANGED
@@ -31,10 +31,10 @@ Ipog::Ipog(const unsigned int t) {
31
31
  }
32
32
 
33
33
  void Ipog::init_bound() {
34
- using dither::product;
34
+ using dither::product3;
35
35
  dtest_case tmp;
36
36
 
37
- product(bound_, tmp, input_params_.begin(), input_params_.begin() + t_);
37
+ product3(bound_, input_params_.begin(), input_params_.begin() + t_);
38
38
  auto size = param_cache_.size();
39
39
  for (auto it = bound_.begin(); it != bound_.end(); ++it) {
40
40
  (*it).resize(size, -1);
@@ -77,9 +77,7 @@ std::forward_list<std::vector<param>> Ipog::cover(const int k) {
77
77
 
78
78
  std::forward_list<std::vector<param>> coverage;
79
79
  for (auto it = product_input.begin(); it != product_input.end(); ++it) {
80
- std::vector<param> tmp;
81
- std::vector<std::vector<param>> x = *it;
82
- product2(coverage, tmp, (*it).cbegin(), (*it).cend());
80
+ product4(coverage, *it);
83
81
  }
84
82
  coverage.remove_if([this](std::vector<param>& a) { return has_previously_tested(a); });
85
83
  return coverage;
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Dither
3
- VERSION = '0.2.0.rc5'
3
+ VERSION = '0.2.1'
4
4
  end
data/lib/dither.rb CHANGED
@@ -97,7 +97,7 @@ require 'dither/graph'
97
97
  if RUBY_PLATFORM =~ /java/
98
98
  require 'java'
99
99
  require 'choco-solver-3.3.1-with-dependencies.jar'
100
- require 'dither-0.1.4.jar'
100
+ require 'dither-0.1.5.jar'
101
101
 
102
102
  require 'dither/java_ext/dither'
103
103
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dither
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.rc5
4
+ version: 0.2.1
5
5
  platform: java
6
6
  authors:
7
7
  - Jason Gowan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-11 00:00:00.000000000 Z
11
+ date: 2015-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -94,7 +94,7 @@ files:
94
94
  - ext/dither/simple_constraint_handler.cc
95
95
  - ext/dither/simple_constraint_handler.h
96
96
  - lib/choco-solver-3.3.1-with-dependencies.jar
97
- - lib/dither-0.1.4.jar
97
+ - lib/dither-0.1.5.jar
98
98
  - lib/dither.rb
99
99
  - lib/dither/aetg.rb
100
100
  - lib/dither/aetg_pairwise.rb
@@ -122,9 +122,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - ">"
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
- version: 1.3.1
127
+ version: '0'
128
128
  requirements: []
129
129
  rubyforge_project: dither
130
130
  rubygems_version: 2.4.8