83 INOUT int *row_indices;
131 R =
sf_merge(A1, B1, E1, cnt, A->sf_size);
149 (void)
set_copy(cube.temp[0], mask);
175 register int i, j, dest;
178 if (A1[0] != (
pcube) NULL) {
179 for(i = 0, j = 1; A1[j] != (
pcube) NULL; j++)
180 if ( (*compare)(&A1[i], &A1[j]) == 0) {
182 (void)
set_or(A1[i], A1[i], A1[j]);
190 A1[dest] = (
pcube) NULL;
200 register pset *
p, *pdest = A1;
203 for(p = A1+1; *p != NULL; p++)
204 if ((*compare)(p, p-1) != 0)
217 register pset *pa, *pb;
218 register pset *pcheck = NULL;
224 for(pa = A1; (a = *pa++) != NULL; ) {
226 if (
SIZE(a) != last_size)
227 last_size =
SIZE(a), pcheck = pdest;
228 for(pb = A1; pb != pcheck; ) {
247 register pset *pa, *pb;
248 register pset *pcheck = NULL;
254 for(pa = A1; (a = *pa++) != NULL; ) {
256 if (
SIZE(a) != last_size)
257 last_size =
SIZE(a), pcheck = pdest;
258 for(pb = A1; pb != pcheck; ) {
279 register pset *pda = A1, *pdb = B1, *pde = E1;
282 for(; *A1 != NULL && *B1 != NULL; )
283 switch((*compare)(A1, B1)) {
285 *pda++ = *A1++;
break;
287 *pde++ = *A1++; B1++;
break;
289 *pdb++ = *B1++;
break;
297 *pda = *pdb = *pde = NULL;
308 register pset *pa, *pb, a, b, *pdest = A1;
311 for(pa = A1; (a = *pa++) != NULL; ) {
313 for(pb = B1; (b = *pb++) != NULL &&
SIZE(b) >
SIZE(a); ) {
334 register pset p, last, *pdest, *A1;
345 qsort((
char *) A1, A->count,
sizeof(
pset), compare);
354 register pset p, last, *pdest, *A1;
370 register pset pr,
p, *pa;
374 for(pr = R->
data, pa = A1; (p = *pa++) != NULL; pr += R->
wsize)
385 INOUT int *row_indices;
388 register pset pr,
p, *pa;
389 register int i, *new_row_indices;
393 new_row_indices =
ALLOC(
int, totcnt);
394 for(pr = R->
data, pa = A1, i=0; (p = *pa++) != NULL; pr += R->
wsize, i++) {
396 new_row_indices[i] = row_indices[(p - pfirst)/R->
wsize];
398 for(i = 0; i < totcnt; i++)
399 row_indices[i] = new_row_indices[i];
400 FREE(new_row_indices);
411 register pset pr, ps, *pmin, *pmid, *pmax;
422 n = 3; temp[0] = A1; temp[1] = B1; temp[2] = E1;
423 for(i = 0; i < n-1; i++)
424 for(j = i+1; j < n; j++)
425 if (
desc1(*temp[i], *temp[j]) > 0) {
430 pmin = temp[0]; pmid = temp[1]; pmax = temp[2];
433 while (*pmin != (
pset) NULL) {
437 if (
desc1(*pmin, *pmax) > 0) {
438 swap = pmax; pmax = pmin; pmin = pmid; pmid =
swap;
439 }
else if (
desc1(*pmin, *pmid) > 0) {
440 swap = pmin; pmin = pmid; pmid =
swap;
pset_family sf_rev_contain(INOUT pset_family A)
pset_family sf_dupl(INOUT pset_family A)
#define INLINEsetp_implies(a, b, when_false)
int d1_rm_equal(pset *A1, int(*compare)())
pset_family dist_merge(INOUT pset_family A, IN pset mask)
#define PUTSIZE(set, size)
pset_family d1merge(INOUT pset_family A, IN int var)
#define foreach_set(R, last, p)
int rm_rev_contain(INOUT pset *A1)
ABC_NAMESPACE_IMPL_START pset_family sf_contain(INOUT pset_family A)
#define INLINEset_copy(r, a)
#define ABC_NAMESPACE_IMPL_END
static int descend(struct saucy *s, struct coloring *c, int target, int min)
#define ABC_NAMESPACE_IMPL_START
pset * sf_list(IN register pset_family A)
pset_family sf_unlist(IN pset *A1, IN int totcnt, IN int size)
pset_family sf_merge(INOUT pset *A1, INOUT pset *B1, INOUT pset *E1, IN int totcnt, IN int size)
pset_family sf_ind_contain(INOUT pset_family A, INOUT int *row_indices)
pset_family sf_ind_unlist(IN pset *A1, IN int totcnt, IN int size, INOUT int *row_indices, IN register pset pfirst)
static void swap(int *a, int x, int y)
pset_family sf_union(INOUT pset_family A, INOUT pset_family B)
int rm_contain(INOUT pset *A1)
int rm_equal(INOUT pset *A1, IN int(*compare)())
int rm2_equal(INOUT register pset *A1, INOUT register pset *B1, OUT pset *E1, IN int(*compare)())
pset * sf_sort(IN pset_family A, IN int(*compare)())
int rm2_contain(INOUT pset *A1, IN pset *B1)