Go to the source code of this file.
|
| pcover | unravel_range (IN pcover B, IN int start, IN int end) |
| |
| pcover | unravel (IN pcover B, IN int start) |
| |
| pcover | lex_sort (pcover T) |
| |
| pcover | size_sort (pcover T) |
| |
| pcover | mini_sort (pcover F, int *compare) |
| |
| pcover | sort_reduce (IN pcover T) |
| |
| pcover | random_order (pcover F) |
| |
| int | cubelist_partition (pcube *T, pcube **A, pcube **B, unsigned int comp_debug) |
| |
| pcover | cof_output (pcover T, int i) |
| |
| pcover | uncof_output (pcover T, int i) |
| |
| void | foreach_output_function (pPLA PLA, int *func, int *func1) |
| |
| void | so_espresso (pPLA PLA, int strategy) |
| |
| void | so_both_espresso (pPLA PLA, int strategy) |
| |
| int | so_do_espresso (pPLA PLA, int i) |
| |
| int | so_do_exact (pPLA PLA, int i) |
| |
| int | so_save (pPLA PLA, int i) |
| |
| int | so_both_do_espresso (pPLA PLA, int i) |
| |
| int | so_both_do_exact (pPLA PLA, int i) |
| |
| int | so_both_save (pPLA PLA, int i) |
| |
◆ cof_output()
Definition at line 312 of file cvrm.c.
315{
317 register pcube p, last, pdest, mask;
318
323 pdest =
GETSET(T1, T1->count++);
326 }
327 }
328 return T1;
329}
#define INLINEset_or(r, a, b)
#define is_in_set(set, e)
#define GETSET(family, index)
#define foreach_set(R, last, p)
◆ cubelist_partition()
| int cubelist_partition |
( |
pcube * | T, |
|
|
pcube ** | A, |
|
|
pcube ** | B, |
|
|
unsigned int | comp_debug ) |
Definition at line 234 of file cvrm.c.
238{
239 register pcube *T1,
p, seed, cof;
241 bool change;
242 int count, numcube;
243
245
246
247 for(T1 = T+2; (
p = *T1++) != NULL; ) {
249 }
250
251
252
253
254
255
257 cof = T[0];
259 count = 1;
260
261 do {
263 for(T1 = T+2; (
p = *T1++) != NULL; ) {
268 count++;
269 }
270
271 }
272 } while (change);
273
275
276 if (comp_debug) {
277 (void) printf("COMPONENT_REDUCTION: split into %d %d\n",
278 count, numcube - count);
279 }
280
281 if (count != numcube) {
282
287 A1 = *A + 2;
288 B1 = *B + 2;
289
290
291 for(T1 = T+2; (
p = *T1++) != NULL; ) {
294 } else {
296 }
297 }
298
299
300 *A1++ = NULL;
301 (*A)[1] = (
pcube) A1;
302 *B1++ = NULL;
303 (*B)[1] = (
pcube) B1;
304 }
305
306 return numcube - count;
307}
#define INLINEset_and(r, a, b)
◆ foreach_output_function()
| void foreach_output_function |
( |
pPLA | PLA, |
|
|
int * | func, |
|
|
int * | func1 ) |
Definition at line 363 of file cvrm.c.
367{
369 int i;
370
371
372 for(i = 0; i <
cube.part_size[
cube.output]; i++) {
373
374
379
380
381 if ((*func)(PLA1, i) == 0) {
383 return;
384 }
385
386
390
391
392 if ((*func1)(PLA1, i) == 0) {
394 return;
395 }
396
397
399
400
401 }
402}
◆ lex_sort()
◆ mini_sort()
Definition at line 141 of file cvrm.c.
144{
145 register int *count, cnt, n =
cube.size, i;
149
150
152
153
155 cnt = 0;
156 for(i = 0; i < n; i++)
158 cnt += count[i];
160 }
162
163
164 qsort((
char *) (F1 =
sf_list(F)), (
size_t)F->count,
sizeof(
pcube), compare);
165 F_sorted =
sf_unlist(F1, F->count, F->sf_size);
167
168 return F_sorted;
169}
#define PUTSIZE(set, size)
◆ random_order()
Definition at line 199 of file cvrm.c.
201{
203 register int i, k;
204#ifdef RANDOM
206#endif
207
209 for(i = F->count - 1; i > 0; i--) {
210
211#ifdef RANDOM
213#else
214
215
216
217 k = (i*23 + 997) % i;
218#endif
219
223 }
225 return F;
226}
◆ size_sort()
◆ so_both_do_espresso()
| int so_both_do_espresso |
( |
pPLA | PLA, |
|
|
int | i ) |
Definition at line 485 of file cvrm.c.
488{
490
491
495
496
500
501 return 1;
502}
ABC_NAMESPACE_IMPL_START pcover espresso(pcover F, pcover D1, pcover R)
#define EXEC_S(fct, name, S)
unsigned __int64 word
DECLARATIONS ///.
◆ so_both_do_exact()
| int so_both_do_exact |
( |
pPLA | PLA, |
|
|
int | i ) |
Definition at line 505 of file cvrm.c.
508{
510
511
515
516
520
521 return 1;
522}
◆ so_both_espresso()
| void so_both_espresso |
( |
pPLA | PLA, |
|
|
int | strategy ) |
Definition at line 429 of file cvrm.c.
432{
435 if (strategy == 0) {
437 } else {
439 }
443}
int so_both_do_espresso(pPLA PLA, int i)
int so_both_do_exact(pPLA PLA, int i)
int so_both_save(pPLA PLA, int i)
void foreach_output_function()
◆ so_both_save()
| int so_both_save |
( |
pPLA | PLA, |
|
|
int | i ) |
Definition at line 525 of file cvrm.c.
528{
529 if (PLA->
F->count > PLA->
R->count) {
535 } else {
538 }
541 return 1;
542}
#define set_remove(set, e)
◆ so_do_espresso()
| int so_do_espresso |
( |
pPLA | PLA, |
|
|
int | i ) |
Definition at line 446 of file cvrm.c.
449{
451
452
456 return 1;
457}
◆ so_do_exact()
| int so_do_exact |
( |
pPLA | PLA, |
|
|
int | i ) |
Definition at line 460 of file cvrm.c.
463{
465
466
470 return 1;
471}
◆ so_espresso()
| void so_espresso |
( |
pPLA | PLA, |
|
|
int | strategy ) |
Definition at line 410 of file cvrm.c.
413{
415 if (strategy == 0) {
417 } else {
419 }
422}
int so_save(pPLA PLA, int i)
int so_do_espresso(pPLA PLA, int i)
int so_do_exact(pPLA PLA, int i)
◆ so_save()
| int so_save |
( |
pPLA | PLA, |
|
|
int | i ) |
◆ sort_reduce()
Definition at line 173 of file cvrm.c.
175{
176 register pcube p, last, largest = NULL;
177 register int bestsize = -1,
size, n =
cube.num_vars;
180
181 if (T->count == 0)
182 return T;
183
184
187 largest =
p, bestsize =
size;
188
191
192 qsort((
char *) (T1 =
sf_list(T)), (
size_t)T->count,
sizeof(
pcube), (int (*)()) descend);
193 T_sorted =
sf_unlist(T1, T->count, T->sf_size);
195
196 return T_sorted;
197}
◆ uncof_output()
Definition at line 335 of file cvrm.c.
338{
339 register pcube p, last, mask;
340
341 if (T == NULL) {
342 return T;
343 }
344
349 }
350 return T;
351}
#define INLINEset_diff(r, a, b)
#define set_insert(set, e)
◆ unravel()
◆ unravel_range()
Definition at line 77 of file cvrm.c.
80{
82 int var, total_size, expansion,
size;
83 register pcube p, last, startbase =
cube.temp[1];
84
85
87 for(var = 0;
var < start;
var++)
88 (
void)
set_or(startbase, startbase,
cube.var_mask[var]);
90 (
void)
set_or(startbase, startbase,
cube.var_mask[var]);
91
92
93 total_size = 0;
95 expansion = 1;
96 for(var = start;
var <= end;
var++)
98 if ((expansion *= size) > 1000000)
99 fatal(
"unreasonable expansion in unravel");
100 total_size += expansion;
101 }
102
103
106 cb_unravel(
p, start, end, startbase, B1);
107 }
109 return B1;
110}