24static void cb_unravel(c, start, end, startbase, B1)
31 int expansion, place, skip,
var,
size, offset;
32 register int i, j, k, n;
39 for(var = start;
var <= end;
var++) {
50 B1->count += expansion;
56 for(var = start;
var <= end;
var++) {
61 for(i =
cube.first_part[var]; i <=
cube.last_part[var]; i++) {
63 for(j = n; j < expansion; j += skip) {
64 for(k = 0; k < place; k++) {
82 int var, total_size, expansion, size;
83 register pcube p, last, startbase =
cube.temp[1];
87 for(var = 0; var < start; var++)
88 (
void)
set_or(startbase, startbase,
cube.var_mask[var]);
89 for(var = end+1; var <
cube.num_vars; var++)
90 (
void)
set_or(startbase, startbase,
cube.var_mask[var]);
96 for(var = start; var <= end; var++)
98 if ((expansion *= size) > 1000000)
99 fatal(
"unreasonable expansion in unravel");
100 total_size += expansion;
106 cb_unravel(
p, start, end, startbase, B1);
145 register int *count, cnt, n =
cube.size, i;
156 for(i = 0; i < n; i++)
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);
176 register pcube p, last, largest = NULL;
177 register int bestsize = -1, size, n =
cube.num_vars;
187 largest =
p, bestsize = size;
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);
209 for(i = F->count - 1; i > 0; i--) {
217 k = (i*23 + 997) % i;
237unsigned int comp_debug;
239 register pcube *T1,
p, seed, cof;
247 for(T1 = T+2; (
p = *T1++) != NULL; ) {
263 for(T1 = T+2; (
p = *T1++) != NULL; ) {
277 (void) printf(
"COMPONENT_REDUCTION: split into %d %d\n",
278 count, numcube - count);
281 if (count != numcube) {
291 for(T1 = T+2; (
p = *T1++) != NULL; ) {
301 (*A)[1] = (
pcube) A1;
303 (*B)[1] = (
pcube) B1;
306 return numcube - count;
317 register pcube p, last, pdest, mask;
323 pdest =
GETSET(T1, T1->count++);
339 register pcube p, last, mask;
372 for(i = 0; i <
cube.part_size[
cube.output]; i++) {
381 if ((*func)(PLA1, i) == 0) {
392 if ((*func1)(PLA1, i) == 0) {
529 if (PLA->F->count > PLA->R->count) {
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int so_both_do_espresso(pPLA PLA, int i)
int so_both_do_exact(pPLA PLA, int i)
int so_save(pPLA PLA, int i)
int so_do_espresso(pPLA PLA, int i)
int so_do_exact(pPLA PLA, int i)
int so_both_save(pPLA PLA, int i)
ABC_NAMESPACE_IMPL_START pcover espresso(pcover F, pcover D1, pcover R)
#define INLINEset_diff(r, a, b)
#define INLINEset_or(r, a, b)
#define PUTSIZE(set, size)
#define is_in_set(set, e)
#define set_insert(set, e)
int so_both_do_espresso()
#define GETSET(family, index)
#define INLINEset_copy(r, a)
#define set_remove(set, e)
#define foreach_set(R, last, p)
#define INLINEset_and(r, a, b)
#define foreach_remaining_set(R, last, pfirst, p)
#define EXEC_S(fct, name, S)
void foreach_output_function()
unsigned __int64 word
DECLARATIONS ///.