pset_family irred_gasp(pset_family F, pset_family D, pset_family G) { if (G->count != 0) F = irredundant(sf_append(F, G), D); else sf_free(G); return F; }
pset_family super_gasp(pset_family F, pset_family D, pset_family R, cost_t *cost) { pset_family G, G1; {long t=util_cpu_time();G = reduce_gasp(F, D);totals(t, 9, G,&( *cost));}; {long t=util_cpu_time();G1 = all_primes(G, R);totals(t, 7, G1,&( *cost));}; sf_free(G); {long t=util_cpu_time();G = sf_dupl(sf_append(F, G1));if(trace)print_trace( G, "NEWPRIMES",util_cpu_time()-t);}; {long t=util_cpu_time();F = irredundant(G, D);totals(t, 5, F,&( *cost));}; return F; }
EXEC(E = simplify(cube1list(F)), "SIMPLIFY ", E); free_cover(F); F = E; } cover_cost(F, &cost); if (unwrap_onset && (cube.part_size[cube.num_vars - 1] > 1) && (cost.out != cost.cubes*cube.part_size[cube.num_vars-1]) && (cost.out < 5000)) EXEC(F = sf_contain(unravel(F, cube.num_vars - 1)), "SETUP ", F); /* Initial expand and irredundant */ foreach_set(F, last, p) { RESET(p, PRIME); } EXECUTE(F = expand(F, R, FALSE), EXPAND_TIME, F, cost); EXECUTE(F = irredundant(F, D), IRRED_TIME, F, cost); if (! single_expand) { if (remove_essential) { EXECUTE(E = essential(&F, &D), ESSEN_TIME, E, cost); } else { E = new_cover(0); } cover_cost(F, &cost); do { /* Repeat inner loop until solution becomes "stable" */ do { copy_cost(&cost, &best_cost); EXECUTE(F = reduce(F, D), REDUCE_TIME, F, cost);