#include "sparse.h"
#include "mincov.h"
#include "util_hack.h"
Go to the source code of this file.
Data Structures | |
struct | set_family |
struct | cost_struct |
struct | pair_struct |
struct | symbolic_list_struct |
struct | symbolic_label_struct |
struct | symbolic_struct |
struct | PLA_t |
struct | pla_types_struct |
struct | cube_struct |
struct | cdata_struct |
Defines | |
#define | ptime() util_cpu_time() |
#define | print_time(t) util_print_time(t) |
#define | BPI 32 |
#define | LOGBPI 5 |
#define | WHICH_WORD(element) (((element) >> LOGBPI) + 1) |
#define | WHICH_BIT(element) ((element) & (BPI-1)) |
#define | SET_SIZE(size) ((size) <= BPI ? 2 : (WHICH_WORD((size)-1) + 1)) |
#define | LOOP(set) (set[0] & 0x03ff) |
#define | PUTLOOP(set, i) (set[0] &= ~0x03ff, set[0] |= (i)) |
#define | LOOPCOPY(set) LOOP(set) |
#define | SIZE(set) (set[0] >> 16) |
#define | PUTSIZE(set, size) (set[0] &= 0xffff, set[0] |= ((size) << 16)) |
#define | NELEM(set) (BPI * LOOP(set)) |
#define | LOOPINIT(size) ((size <= BPI) ? 1 : WHICH_WORD((size)-1)) |
#define | SET(set, flag) (set[0] |= (flag)) |
#define | RESET(set, flag) (set[0] &= ~ (flag)) |
#define | TESTP(set, flag) (set[0] & (flag)) |
#define | PRIME 0x8000 |
#define | NONESSEN 0x4000 |
#define | ACTIVE 0x2000 |
#define | REDUND 0x1000 |
#define | COVERED 0x0800 |
#define | RELESSEN 0x0400 |
#define | foreach_set(R, last, p) for(p=R->data,last=p+R->count*R->wsize;p<last;p+=R->wsize) |
#define | foreach_remaining_set(R, last, pfirst, p) for(p=pfirst+R->wsize,last=R->data+R->count*R->wsize;p<last;p+=R->wsize) |
#define | foreach_active_set(R, last, p) foreach_set(R,last,p) if (TESTP(p, ACTIVE)) |
#define | foreachi_set(R, i, p) for(p=R->data,i=0;i<R->count;p+=R->wsize,i++) |
#define | foreachi_active_set(R, i, p) foreachi_set(R,i,p) if (TESTP(p, ACTIVE)) |
#define | foreach_set_element(p, i, val, base) |
#define | GETSET(family, index) ((family)->data + (family)->wsize * (index)) |
#define | set_new(size) set_clear(ALLOC(unsigned int, SET_SIZE(size)), size) |
#define | set_full(size) set_fill(ALLOC(unsigned int, SET_SIZE(size)), size) |
#define | set_save(r) set_copy(ALLOC(unsigned int, SET_SIZE(NELEM(r))), r) |
#define | set_free(r) FREE(r) |
#define | is_in_set(set, e) (set[WHICH_WORD(e)] & (1 << WHICH_BIT(e))) |
#define | set_remove(set, e) (set[WHICH_WORD(e)] &= ~ (1 << WHICH_BIT(e))) |
#define | set_insert(set, e) (set[WHICH_WORD(e)] |= 1 << WHICH_BIT(e)) |
#define | INLINEset_copy(r, a) {register int i_=LOOPCOPY(a); do r[i_]=a[i_]; while (--i_>=0);} |
#define | INLINEset_clear(r, size) {register int i_=LOOPINIT(size); *r=i_; do r[i_] = 0; while (--i_ > 0);} |
#define | INLINEset_fill(r, size) |
#define | INLINEset_and(r, a, b) |
#define | INLINEset_or(r, a, b) |
#define | INLINEset_diff(r, a, b) |
#define | INLINEset_ndiff(r, a, b, fullset) |
#define | INLINEset_xor(r, a, b) |
#define | INLINEset_xnor(r, a, b, fullset) |
#define | INLINEset_merge(r, a, b, mask) |
#define | INLINEsetp_implies(a, b, when_false) |
#define | INLINEsetp_disjoint(a, b, when_false) |
#define | INLINEsetp_equal(a, b, when_false) |
#define | count_ones(v) |
#define | bool int |
#define | FALSE 0 |
#define | TRUE 1 |
#define | MAYBE 2 |
#define | print_bool(x) ((x) == 0 ? "FALSE" : ((x) == 1 ? "TRUE" : "MAYBE")) |
#define | pcube pset |
#define | new_cube() set_new(cube.size) |
#define | free_cube(r) set_free(r) |
#define | pcover pset_family |
#define | new_cover(i) sf_new(i, cube.size) |
#define | free_cover(r) sf_free(r) |
#define | free_cubelist(T) FREE(T[0]); FREE(T); |
#define | equal(a, b) (strcmp(a,b) == 0) |
#define | CUBELISTSIZE(T) (((pcube *) T[1] - T) - 3) |
#define | IN |
#define | OUT |
#define | INOUT |
#define | F_type 1 |
#define | D_type 2 |
#define | R_type 4 |
#define | PLEASURE_type 8 |
#define | EQNTOTT_type 16 |
#define | KISS_type 128 |
#define | CONSTRAINTS_type 256 |
#define | SYMBOLIC_CONSTRAINTS_type 512 |
#define | FD_type (F_type | D_type) |
#define | FR_type (F_type | R_type) |
#define | DR_type (D_type | R_type) |
#define | FDR_type (F_type | D_type | R_type) |
#define | COMPL 0x0001 |
#define | ESSEN 0x0002 |
#define | EXPAND 0x0004 |
#define | EXPAND1 0x0008 |
#define | GASP 0x0010 |
#define | IRRED 0x0020 |
#define | REDUCE 0x0040 |
#define | REDUCE1 0x0080 |
#define | SPARSE 0x0100 |
#define | TAUT 0x0200 |
#define | EXACT 0x0400 |
#define | MINCOV 0x0800 |
#define | MINCOV1 0x1000 |
#define | SHARP 0x2000 |
#define | IRRED1 0x4000 |
#define | VERSION "UC Berkeley, Espresso Version #2.3, Release date 01/31/88" |
#define | TIME_COUNT 16 |
#define | READ_TIME 0 |
#define | COMPL_TIME 1 |
#define | ONSET_TIME 2 |
#define | ESSEN_TIME 3 |
#define | EXPAND_TIME 4 |
#define | IRRED_TIME 5 |
#define | REDUCE_TIME 6 |
#define | GEXPAND_TIME 7 |
#define | GIRRED_TIME 8 |
#define | GREDUCE_TIME 9 |
#define | PRIMES_TIME 10 |
#define | MINCOV_TIME 11 |
#define | MV_REDUCE_TIME 12 |
#define | RAISE_IN_TIME 13 |
#define | VERIFY_TIME 14 |
#define | WRITE_TIME 15 |
#define | NUMINPUTS cube.num_binary_vars |
#define | NUMOUTPUTS cube.part_size[cube.num_vars - 1] |
#define | POSITIVE_PHASE(pos) (is_in_set(PLA->phase, cube.first_part[cube.output]+pos) != 0) |
#define | INLABEL(var) PLA->label[cube.first_part[var] + 1] |
#define | OUTLABEL(pos) PLA->label[cube.first_part[cube.output] + pos] |
#define | GETINPUT(c, pos) ((c[WHICH_WORD(2*pos)] >> WHICH_BIT(2*pos)) & 3) |
#define | GETOUTPUT(c, pos) (is_in_set(c, cube.first_part[cube.output] + pos) != 0) |
#define | PUTINPUT(c, pos, value) |
#define | PUTOUTPUT(c, pos, value) |
#define | TWO 3 |
#define | DASH 3 |
#define | ONE 2 |
#define | ZERO 1 |
#define | EXEC(fct, name, S) {long t=ptime();fct;if(trace)print_trace(S,name,ptime()-t);} |
#define | EXEC_S(fct, name, S) {long t=ptime();fct;if(summary)print_trace(S,name,ptime()-t);} |
#define | EXECUTE(fct, i, S, cost) {long t=ptime();fct;totals(t,i,S,&(cost));} |
#define | CUBE_TEMP 10 |
#define | DISJOINT 0x55555555 |
Typedefs | |
typedef unsigned int * | pset |
typedef struct set_family | set_family_t |
typedef struct set_family * | pset_family |
typedef struct cost_struct | cost_t |
typedef struct cost_struct * | pcost |
typedef struct pair_struct | pair_t |
typedef struct pair_struct * | ppair |
typedef struct symbolic_list_struct | symbolic_list_t |
typedef struct symbolic_label_struct | symbolic_label_t |
typedef struct symbolic_struct | symbolic_t |
typedef struct PLA_t * | pPLA |
Functions | |
int | binate_split_select () |
pcover | cubeunlist () |
pcube * | cofactor () |
pcube * | cube1list () |
pcube * | cube2list () |
pcube * | cube3list () |
pcube * | scofactor () |
void | massive_count () |
pcover | complement () |
pcover | simplify () |
void | simp_comp () |
int | d1_rm_equal () |
int | rm2_contain () |
int | rm2_equal () |
int | rm_contain () |
int | rm_equal () |
int | rm_rev_contain () |
pset * | sf_list () |
pset * | sf_sort () |
pset_family | d1merge () |
pset_family | dist_merge () |
pset_family | sf_contain () |
pset_family | sf_dupl () |
pset_family | sf_ind_contain () |
pset_family | sf_ind_unlist () |
pset_family | sf_merge () |
pset_family | sf_rev_contain () |
pset_family | sf_union () |
pset_family | sf_unlist () |
void | cube_setup () |
void | restore_cube_struct () |
void | save_cube_struct () |
void | setdown_cube () |
PLA_labels () | |
char * | get_word () |
int | label_index () |
int | read_pla () |
int | read_symbolic () |
pPLA | new_PLA () |
void | PLA_summary () |
void | free_PLA () |
void | parse_pla () |
void | read_cube () |
void | skip_line () |
foreach_output_function () | |
int | cubelist_partition () |
int | so_both_do_espresso () |
int | so_both_do_exact () |
int | so_both_save () |
int | so_do_espresso () |
int | so_do_exact () |
int | so_save () |
pcover | cof_output () |
pcover | lex_sort () |
pcover | mini_sort () |
pcover | random_order () |
pcover | size_sort () |
pcover | sort_reduce () |
pcover | uncof_output () |
pcover | unravel () |
pcover | unravel_range () |
void | so_both_espresso () |
void | so_espresso () |
char * | fmt_cost () |
char * | print_cost () |
char * | strsav () |
void | copy_cost () |
void | cover_cost () |
void | fatal () |
void | print_trace () |
void | size_stamp () |
void | totals () |
char * | fmt_cube () |
char * | fmt_expanded_cube () |
char * | pc1 () |
char * | pc2 () |
char * | pc3 () |
int | makeup_labels () |
kiss_output () | |
kiss_print_cube () | |
output_symbolic_constraints () | |
void | cprint () |
void | debug1_print () |
void | debug_print () |
void | eqn_output () |
void | fpr_header () |
void | fprint_pla () |
void | pls_group () |
void | pls_label () |
void | pls_output () |
void | print_cube () |
void | print_expanded_cube () |
void | sf_debug_print () |
find_equiv_outputs () | |
int | check_equiv () |
pcover | espresso () |
bool | essen_cube () |
pcover | cb_consensus () |
pcover | cb_consensus_dist0 () |
pcover | essential () |
pcover | minimize_exact () |
pcover | minimize_exact_literals () |
bool | feasibly_covered () |
int | most_frequent () |
pcover | all_primes () |
pcover | expand () |
pcover | find_all_primes () |
void | elim_lowering () |
void | essen_parts () |
void | essen_raising () |
void | expand1 () |
void | mincov () |
void | select_feasible () |
void | setup_BB_CC () |
pcover | expand_gasp () |
pcover | irred_gasp () |
pcover | last_gasp () |
pcover | super_gasp () |
void | expand1_gasp () |
int | util_getopt () |
find_dc_inputs () | |
find_inputs () | |
form_bitvector () | |
map_dcset () | |
map_output_symbolic () | |
map_symbolic () | |
pcover | map_symbolic_cover () |
symbolic_hack_labels () | |
bool | cube_is_covered () |
bool | taut_special_cases () |
bool | tautology () |
pcover | irredundant () |
void | mark_irredundant () |
void | irred_split_cover () |
sm_matrix * | irred_derive_table () |
pset | minterms () |
void | explode () |
void | map () |
output_phase_setup () | |
pPLA | set_phase () |
pcover | opo () |
pcube | find_phase () |
pset_family | find_covers () |
pset_family | form_cover_table () |
pset_family | opo_leaf () |
pset_family | opo_recur () |
void | opoall () |
void | phase_assignment () |
void | repeated_phase_assignment () |
generate_all_pairs () | |
int ** | find_pairing_cost () |
int | find_best_cost () |
int | greedy_best_cost () |
int | minimize_pair () |
int | pair_free () |
pair_all () | |
pcover | delvar () |
pcover | pairvar () |
ppair | pair_best_cost () |
ppair | pair_new () |
ppair | pair_save () |
print_pair () | |
void | find_optimal_pairing () |
void | set_pair () |
void | set_pair1 () |
pcover | primes_consensus () |
bool | sccc_special_cases () |
pcover | reduce () |
pcube | reduce_cube () |
pcube | sccc () |
pcube | sccc_cube () |
pcube | sccc_merge () |
bool | set_andp () |
bool | set_orp () |
bool | setp_disjoint () |
bool | setp_empty () |
bool | setp_equal () |
bool | setp_full () |
bool | setp_implies () |
char * | pbv1 () |
char * | ps1 () |
int * | sf_count () |
int * | sf_count_restricted () |
int | bit_index () |
int | set_dist () |
int | set_ord () |
void | set_adjcnt () |
pset | set_and () |
pset | set_clear () |
pset | set_copy () |
pset | set_diff () |
pset | set_fill () |
pset | set_merge () |
pset | set_or () |
pset | set_xor () |
pset | sf_and () |
pset | sf_or () |
pset_family | sf_active () |
pset_family | sf_addcol () |
pset_family | sf_addset () |
pset_family | sf_append () |
pset_family | sf_bm_read () |
pset_family | sf_compress () |
pset_family | sf_copy () |
pset_family | sf_copy_col () |
pset_family | sf_delc () |
pset_family | sf_delcol () |
pset_family | sf_inactive () |
pset_family | sf_join () |
pset_family | sf_new () |
pset_family | sf_permute () |
pset_family | sf_read () |
pset_family | sf_save () |
pset_family | sf_transpose () |
void | set_write () |
void | sf_bm_print () |
void | sf_cleanup () |
void | sf_delset () |
void | sf_free () |
void | sf_print () |
void | sf_write () |
bool | ccommon () |
bool | cdist0 () |
bool | full_row () |
int | ascend () |
int | cactive () |
int | cdist () |
int | cdist01 () |
int | cvolume () |
int | d1_order () |
int | d1_order_size () |
int | desc1 () |
int | descend () |
int | lex_order () |
int | lex_order1 () |
pset | force_lower () |
void | consensus () |
pcover | cb1_dsharp () |
pcover | cb_dsharp () |
pcover | cb_recur_dsharp () |
pcover | cb_recur_sharp () |
pcover | cb_sharp () |
pcover | cv_dsharp () |
pcover | cv_intersect () |
pcover | cv_sharp () |
pcover | dsharp () |
pcover | make_disjoint () |
pcover | sharp () |
pset | do_sm_minimum_cover () |
pcover | make_sparse () |
pcover | mv_reduce () |
qsort () | |
qst () | |
pcover | find_all_minimal_covers_petrick () |
pcover | map_cover_to_unate () |
pcover | map_unate_to_cover () |
pset_family | exact_minimum_cover () |
pset_family | gen_primes () |
pset_family | unate_compl () |
pset_family | unate_complement () |
pset_family | unate_intersect () |
PLA_permute () | |
bool | PLA_verify () |
bool | check_consistency () |
bool | verify () |
Variables | |
int | bit_count [256] |
unsigned int | debug |
bool | verbose_debug |
char * | total_name [TIME_COUNT] |
long | total_time [TIME_COUNT] |
int | total_calls [TIME_COUNT] |
bool | echo_comments |
bool | echo_unknown_commands |
bool | force_irredundant |
bool | skip_make_sparse |
bool | kiss |
bool | pos |
bool | print_solution |
bool | recompute_onset |
bool | remove_essential |
bool | single_expand |
bool | summary |
bool | trace |
bool | unwrap_onset |
bool | use_random_order |
bool | use_super_gasp |
char * | filename |
bool | debug_exact_minimization |
struct pla_types_struct | pla_types [] |
struct cube_struct cube | temp_cube_save |
struct cdata_struct cdata | temp_cdata_save |
#define ACTIVE 0x2000 |
Definition at line 125 of file espresso.h.
#define bool int |
Definition at line 250 of file espresso.h.
#define BPI 32 |
Definition at line 59 of file espresso.h.
#define COMPL 0x0001 |
Definition at line 347 of file espresso.h.
#define COMPL_TIME 1 |
Definition at line 369 of file espresso.h.
#define CONSTRAINTS_type 256 |
Definition at line 339 of file espresso.h.
#define count_ones | ( | v | ) |
#define COVERED 0x0800 |
Definition at line 127 of file espresso.h.
#define CUBE_TEMP 10 |
Definition at line 465 of file espresso.h.
#define CUBELISTSIZE | ( | T | ) | (((pcube *) T[1] - T) - 3) |
Definition at line 325 of file espresso.h.
#define D_type 2 |
Definition at line 334 of file espresso.h.
#define DASH 3 |
Definition at line 409 of file espresso.h.
#define DISJOINT 0x55555555 |
Definition at line 508 of file espresso.h.
#define DR_type (D_type | R_type) |
Definition at line 343 of file espresso.h.
#define EQNTOTT_type 16 |
Definition at line 337 of file espresso.h.
#define equal | ( | a, | |||
b | ) | (strcmp(a,b) == 0) |
Definition at line 322 of file espresso.h.
#define ESSEN 0x0002 |
Definition at line 348 of file espresso.h.
#define ESSEN_TIME 3 |
Definition at line 371 of file espresso.h.
#define EXACT 0x0400 |
Definition at line 357 of file espresso.h.
Definition at line 414 of file espresso.h.
Definition at line 416 of file espresso.h.
#define EXECUTE | ( | fct, | |||
i, | |||||
S, | |||||
cost | ) | {long t=ptime();fct;totals(t,i,S,&(cost));} |
Definition at line 418 of file espresso.h.
#define EXPAND 0x0004 |
Definition at line 349 of file espresso.h.
#define EXPAND1 0x0008 |
Definition at line 350 of file espresso.h.
#define EXPAND_TIME 4 |
Definition at line 372 of file espresso.h.
#define F_type 1 |
Definition at line 333 of file espresso.h.
#define FALSE 0 |
Definition at line 251 of file espresso.h.
#define FD_type (F_type | D_type) |
Definition at line 341 of file espresso.h.
#define FDR_type (F_type | D_type | R_type) |
Definition at line 344 of file espresso.h.
#define foreach_active_set | ( | R, | |||
last, | |||||
p | ) | foreach_set(R,last,p) if (TESTP(p, ACTIVE)) |
Definition at line 135 of file espresso.h.
#define foreach_remaining_set | ( | R, | |||
last, | |||||
pfirst, | |||||
p | ) | for(p=pfirst+R->wsize,last=R->data+R->count*R->wsize;p<last;p+=R->wsize) |
Definition at line 133 of file espresso.h.
#define foreach_set | ( | R, | |||
last, | |||||
p | ) | for(p=R->data,last=p+R->count*R->wsize;p<last;p+=R->wsize) |
Definition at line 131 of file espresso.h.
#define foreach_set_element | ( | p, | |||
i, | |||||
val, | |||||
base | ) |
for(i = LOOP(p); i > 0; ) \ for(val = p[i], base = --i << LOGBPI; val != 0; base++, val >>= 1) \ if (val & 1)
Definition at line 151 of file espresso.h.
#define foreachi_active_set | ( | R, | |||
i, | |||||
p | ) | foreachi_set(R,i,p) if (TESTP(p, ACTIVE)) |
Definition at line 141 of file espresso.h.
#define foreachi_set | ( | R, | |||
i, | |||||
p | ) | for(p=R->data,i=0;i<R->count;p+=R->wsize,i++) |
Definition at line 139 of file espresso.h.
#define FR_type (F_type | R_type) |
Definition at line 342 of file espresso.h.
#define free_cover | ( | r | ) | sf_free(r) |
Definition at line 262 of file espresso.h.
#define free_cube | ( | r | ) | set_free(r) |
Definition at line 259 of file espresso.h.
#define free_cubelist | ( | T | ) | FREE(T[0]); FREE(T); |
Definition at line 263 of file espresso.h.
#define GASP 0x0010 |
Definition at line 351 of file espresso.h.
Definition at line 396 of file espresso.h.
Definition at line 398 of file espresso.h.
#define GETSET | ( | family, | |||
index | ) | ((family)->data + (family)->wsize * (index)) |
Definition at line 157 of file espresso.h.
#define GEXPAND_TIME 7 |
Definition at line 375 of file espresso.h.
#define GIRRED_TIME 8 |
Definition at line 376 of file espresso.h.
#define GREDUCE_TIME 9 |
Definition at line 377 of file espresso.h.
#define IN |
Definition at line 328 of file espresso.h.
#define INLABEL | ( | var | ) | PLA->label[cube.first_part[var] + 1] |
Definition at line 393 of file espresso.h.
#define INLINEset_and | ( | r, | |||
a, | |||||
b | ) |
Definition at line 198 of file espresso.h.
#define INLINEset_clear | ( | r, | |||
size | ) | {register int i_=LOOPINIT(size); *r=i_; do r[i_] = 0; while (--i_ > 0);} |
Definition at line 193 of file espresso.h.
#define INLINEset_copy | ( | r, | |||
a | ) | {register int i_=LOOPCOPY(a); do r[i_]=a[i_]; while (--i_>=0);} |
Definition at line 191 of file espresso.h.
#define INLINEset_diff | ( | r, | |||
a, | |||||
b | ) |
Definition at line 204 of file espresso.h.
#define INLINEset_fill | ( | r, | |||
size | ) |
#define INLINEset_merge | ( | r, | |||
a, | |||||
b, | |||||
mask | ) |
{register int i_=LOOP(a); PUTLOOP(r,i_);\ do r[i_] = (a[i_]&mask[i_]) | (b[i_]&~mask[i_]); while (--i_>0);}
Definition at line 221 of file espresso.h.
#define INLINEset_ndiff | ( | r, | |||
a, | |||||
b, | |||||
fullset | ) |
{register int i_=LOOP(a); PUTLOOP(r,i_);\ do r[i_] = fullset[i_] & (a[i_] | ~ b[i_]); while (--i_>0);}
Definition at line 207 of file espresso.h.
#define INLINEset_or | ( | r, | |||
a, | |||||
b | ) |
Definition at line 201 of file espresso.h.
#define INLINEset_xnor | ( | r, | |||
a, | |||||
b, | |||||
fullset | ) |
{register int i_=LOOP(a); PUTLOOP(r,i_);\ do r[i_] = fullset[i_] & ~ (a[i_] ^ b[i_]); while (--i_>0);}
Definition at line 217 of file espresso.h.
#define INLINEset_xor | ( | r, | |||
a, | |||||
b | ) |
Definition at line 214 of file espresso.h.
#define INLINEsetp_disjoint | ( | a, | |||
b, | |||||
when_false | ) |
{register int i_=LOOP(a); do if (a[i_]&b[i_]) break; while (--i_>0);\ if (i_ != 0) when_false;}
Definition at line 227 of file espresso.h.
#define INLINEsetp_equal | ( | a, | |||
b, | |||||
when_false | ) |
{register int i_=LOOP(a); do if (a[i_]!=b[i_]) break; while (--i_>0);\ if (i_ != 0) when_false;}
Definition at line 230 of file espresso.h.
#define INLINEsetp_implies | ( | a, | |||
b, | |||||
when_false | ) |
{register int i_=LOOP(a); do if (a[i_]&~b[i_]) break; while (--i_>0);\ if (i_ != 0) when_false;}
Definition at line 224 of file espresso.h.
#define INOUT |
Definition at line 330 of file espresso.h.
#define IRRED 0x0020 |
Definition at line 352 of file espresso.h.
#define IRRED1 0x4000 |
Definition at line 361 of file espresso.h.
#define IRRED_TIME 5 |
Definition at line 373 of file espresso.h.
#define is_in_set | ( | set, | |||
e | ) | (set[WHICH_WORD(e)] & (1 << WHICH_BIT(e))) |
Definition at line 166 of file espresso.h.
#define KISS_type 128 |
Definition at line 338 of file espresso.h.
#define LOGBPI 5 |
Definition at line 63 of file espresso.h.
#define LOOP | ( | set | ) | (set[0] & 0x03ff) |
Definition at line 100 of file espresso.h.
#define LOOPCOPY | ( | set | ) | LOOP(set) |
Definition at line 103 of file espresso.h.
Definition at line 113 of file espresso.h.
#define MAYBE 2 |
Definition at line 253 of file espresso.h.
#define MINCOV 0x0800 |
Definition at line 358 of file espresso.h.
#define MINCOV1 0x1000 |
Definition at line 359 of file espresso.h.
#define MINCOV_TIME 11 |
Definition at line 379 of file espresso.h.
#define MV_REDUCE_TIME 12 |
Definition at line 380 of file espresso.h.
#define NELEM | ( | set | ) | (BPI * LOOP(set)) |
Definition at line 112 of file espresso.h.
#define new_cover | ( | i | ) | sf_new(i, cube.size) |
Definition at line 261 of file espresso.h.
#define new_cube | ( | ) | set_new(cube.size) |
Definition at line 258 of file espresso.h.
#define NONESSEN 0x4000 |
Definition at line 124 of file espresso.h.
#define NUMINPUTS cube.num_binary_vars |
Definition at line 387 of file espresso.h.
#define NUMOUTPUTS cube.part_size[cube.num_vars - 1] |
Definition at line 388 of file espresso.h.
#define ONE 2 |
Definition at line 410 of file espresso.h.
#define ONSET_TIME 2 |
Definition at line 370 of file espresso.h.
#define OUT |
Definition at line 329 of file espresso.h.
Definition at line 394 of file espresso.h.
#define pcover pset_family |
Definition at line 260 of file espresso.h.
#define pcube pset |
Definition at line 257 of file espresso.h.
#define PLEASURE_type 8 |
Definition at line 336 of file espresso.h.
Definition at line 390 of file espresso.h.
#define PRIME 0x8000 |
Definition at line 123 of file espresso.h.
#define PRIMES_TIME 10 |
Definition at line 378 of file espresso.h.
#define print_bool | ( | x | ) | ((x) == 0 ? "FALSE" : ((x) == 1 ? "TRUE" : "MAYBE")) |
Definition at line 254 of file espresso.h.
#define print_time | ( | t | ) | util_print_time(t) |
Definition at line 22 of file espresso.h.
#define ptime | ( | ) | util_cpu_time() |
Definition at line 21 of file espresso.h.
c[WHICH_WORD(2*pos)] = (c[WHICH_WORD(2*pos)] & ~(3 << WHICH_BIT(2*pos)))\ | (value << WHICH_BIT(2*pos))
Definition at line 401 of file espresso.h.
#define PUTLOOP | ( | set, | |||
i | ) | (set[0] &= ~0x03ff, set[0] |= (i)) |
Definition at line 101 of file espresso.h.
c[WHICH_WORD(pos)] = (c[WHICH_WORD(pos)] & ~(1 << WHICH_BIT(pos)))\ | (value << WHICH_BIT(pos))
Definition at line 404 of file espresso.h.
#define PUTSIZE | ( | set, | |||
size | ) | (set[0] &= 0xffff, set[0] |= ((size) << 16)) |
Definition at line 105 of file espresso.h.
#define R_type 4 |
Definition at line 335 of file espresso.h.
#define RAISE_IN_TIME 13 |
Definition at line 381 of file espresso.h.
#define READ_TIME 0 |
Definition at line 368 of file espresso.h.
#define REDUCE 0x0040 |
Definition at line 353 of file espresso.h.
#define REDUCE1 0x0080 |
Definition at line 354 of file espresso.h.
#define REDUCE_TIME 6 |
Definition at line 374 of file espresso.h.
#define REDUND 0x1000 |
Definition at line 126 of file espresso.h.
#define RELESSEN 0x0400 |
Definition at line 128 of file espresso.h.
#define RESET | ( | set, | |||
flag | ) | (set[0] &= ~ (flag)) |
Definition at line 119 of file espresso.h.
#define SET | ( | set, | |||
flag | ) | (set[0] |= (flag)) |
Definition at line 118 of file espresso.h.
#define set_free | ( | r | ) | FREE(r) |
Definition at line 163 of file espresso.h.
Definition at line 161 of file espresso.h.
#define set_insert | ( | set, | |||
e | ) | (set[WHICH_WORD(e)] |= 1 << WHICH_BIT(e)) |
Definition at line 168 of file espresso.h.
Definition at line 160 of file espresso.h.
#define set_remove | ( | set, | |||
e | ) | (set[WHICH_WORD(e)] &= ~ (1 << WHICH_BIT(e))) |
Definition at line 167 of file espresso.h.
#define set_save | ( | r | ) | set_copy(ALLOC(unsigned int, SET_SIZE(NELEM(r))), r) |
Definition at line 162 of file espresso.h.
Definition at line 88 of file espresso.h.
#define SHARP 0x2000 |
Definition at line 360 of file espresso.h.
#define SIZE | ( | set | ) | (set[0] >> 16) |
Definition at line 104 of file espresso.h.
#define SPARSE 0x0100 |
Definition at line 355 of file espresso.h.
#define SYMBOLIC_CONSTRAINTS_type 512 |
Definition at line 340 of file espresso.h.
#define TAUT 0x0200 |
Definition at line 356 of file espresso.h.
#define TESTP | ( | set, | |||
flag | ) | (set[0] & (flag)) |
Definition at line 120 of file espresso.h.
#define TIME_COUNT 16 |
Definition at line 367 of file espresso.h.
#define TRUE 1 |
Definition at line 252 of file espresso.h.
#define TWO 3 |
Definition at line 408 of file espresso.h.
#define VERIFY_TIME 14 |
Definition at line 382 of file espresso.h.
#define VERSION "UC Berkeley, Espresso Version #2.3, Release date 01/31/88" |
Definition at line 363 of file espresso.h.
#define WHICH_BIT | ( | element | ) | ((element) & (BPI-1)) |
Definition at line 84 of file espresso.h.
#define WHICH_WORD | ( | element | ) | (((element) >> LOGBPI) + 1) |
Definition at line 83 of file espresso.h.
#define WRITE_TIME 15 |
Definition at line 383 of file espresso.h.
#define ZERO 1 |
Definition at line 411 of file espresso.h.
typedef struct cost_struct cost_t |
typedef struct pair_struct pair_t |
typedef struct cost_struct * pcost |
typedef struct pair_struct * ppair |
typedef unsigned int* pset |
Definition at line 69 of file espresso.h.
typedef struct set_family * pset_family |
typedef struct set_family set_family_t |
typedef struct symbolic_label_struct symbolic_label_t |
typedef struct symbolic_list_struct symbolic_list_t |
typedef struct symbolic_struct symbolic_t |
pcover all_primes | ( | ) |
int ascend | ( | ) |
int binate_split_select | ( | ) |
int bit_index | ( | ) |
int cactive | ( | ) |
pcover cb1_dsharp | ( | ) |
pcover cb_consensus | ( | ) |
pcover cb_consensus_dist0 | ( | ) |
pcover cb_dsharp | ( | ) |
pcover cb_recur_dsharp | ( | ) |
pcover cb_recur_sharp | ( | ) |
pcover cb_sharp | ( | ) |
bool ccommon | ( | ) |
int cdist | ( | ) |
bool cdist0 | ( | ) |
int cdist01 | ( | ) |
bool check_consistency | ( | ) |
int check_equiv | ( | ) |
pcover cof_output | ( | ) |
pcube* cofactor | ( | ) |
pcover complement | ( | ) |
void consensus | ( | ) |
void copy_cost | ( | ) |
void cover_cost | ( | ) |
void cprint | ( | ) |
pcube* cube1list | ( | ) |
pcube* cube2list | ( | ) |
pcube* cube3list | ( | ) |
bool cube_is_covered | ( | ) |
void cube_setup | ( | ) |
Definition at line 24 of file cubestr.c.
00025 { 00026 register int i, var; 00027 register pcube p; 00028 00029 if (cube.num_binary_vars < 0 || cube.num_vars < cube.num_binary_vars) 00030 fatal("cube size is silly, error in .i/.o or .mv"); 00031 00032 cube.num_mv_vars = cube.num_vars - cube.num_binary_vars; 00033 cube.output = cube.num_mv_vars > 0 ? cube.num_vars - 1 : -1; 00034 00035 cube.size = 0; 00036 cube.first_part = ALLOC(int, cube.num_vars); 00037 cube.last_part = ALLOC(int, cube.num_vars); 00038 cube.first_word = ALLOC(int, cube.num_vars); 00039 cube.last_word = ALLOC(int, cube.num_vars); 00040 for(var = 0; var < cube.num_vars; var++) { 00041 if (var < cube.num_binary_vars) 00042 cube.part_size[var] = 2; 00043 cube.first_part[var] = cube.size; 00044 cube.first_word[var] = WHICH_WORD(cube.size); 00045 cube.size += ABS(cube.part_size[var]); 00046 cube.last_part[var] = cube.size - 1; 00047 cube.last_word[var] = WHICH_WORD(cube.size - 1); 00048 } 00049 00050 cube.var_mask = ALLOC(pset, cube.num_vars); 00051 cube.sparse = ALLOC(int, cube.num_vars); 00052 cube.binary_mask = new_cube(); 00053 cube.mv_mask = new_cube(); 00054 for(var = 0; var < cube.num_vars; var++) { 00055 p = cube.var_mask[var] = new_cube(); 00056 for(i = cube.first_part[var]; i <= cube.last_part[var]; i++) 00057 set_insert(p, i); 00058 if (var < cube.num_binary_vars) { 00059 INLINEset_or(cube.binary_mask, cube.binary_mask, p); 00060 cube.sparse[var] = 0; 00061 } else { 00062 INLINEset_or(cube.mv_mask, cube.mv_mask, p); 00063 cube.sparse[var] = 1; 00064 } 00065 } 00066 if (cube.num_binary_vars == 0) 00067 cube.inword = -1; 00068 else { 00069 cube.inword = cube.last_word[cube.num_binary_vars - 1]; 00070 cube.inmask = cube.binary_mask[cube.inword] & DISJOINT; 00071 } 00072 00073 cube.temp = ALLOC(pset, CUBE_TEMP); 00074 for(i = 0; i < CUBE_TEMP; i++) 00075 cube.temp[i] = new_cube(); 00076 cube.fullset = set_fill(new_cube(), cube.size); 00077 cube.emptyset = new_cube(); 00078 00079 cdata.part_zeros = ALLOC(int, cube.size); 00080 cdata.var_zeros = ALLOC(int, cube.num_vars); 00081 cdata.parts_active = ALLOC(int, cube.num_vars); 00082 cdata.is_unate = ALLOC(int, cube.num_vars); 00083 }
int cubelist_partition | ( | ) |
pcover cubeunlist | ( | ) |
pcover cv_dsharp | ( | ) |
pcover cv_intersect | ( | ) |
pcover cv_sharp | ( | ) |
int cvolume | ( | ) |
int d1_order | ( | ) |
int d1_order_size | ( | ) |
int d1_rm_equal | ( | ) |
pset_family d1merge | ( | ) |
void debug1_print | ( | ) |
void debug_print | ( | ) |
pcover delvar | ( | ) |
int desc1 | ( | ) |
int descend | ( | ) |
pset_family dist_merge | ( | ) |
pset do_sm_minimum_cover | ( | ) |
pcover dsharp | ( | ) |
void elim_lowering | ( | ) |
void eqn_output | ( | ) |
pcover espresso | ( | ) |
bool essen_cube | ( | ) |
void essen_parts | ( | ) |
void essen_raising | ( | ) |
pcover essential | ( | ) |
pset_family exact_minimum_cover | ( | ) |
pcover expand | ( | ) |
void expand1 | ( | ) |
void expand1_gasp | ( | ) |
pcover expand_gasp | ( | ) |
void explode | ( | ) |
void fatal | ( | ) |
bool feasibly_covered | ( | ) |
pcover find_all_minimal_covers_petrick | ( | ) |
pcover find_all_primes | ( | ) |
int find_best_cost | ( | ) |
pset_family find_covers | ( | ) |
find_dc_inputs | ( | ) |
find_equiv_outputs | ( | ) |
find_inputs | ( | ) |
void find_optimal_pairing | ( | ) |
int** find_pairing_cost | ( | ) |
pcube find_phase | ( | ) |
char* fmt_cost | ( | ) |
char* fmt_cube | ( | ) |
char* fmt_expanded_cube | ( | ) |
pset force_lower | ( | ) |
foreach_output_function | ( | ) |
form_bitvector | ( | ) |
pset_family form_cover_table | ( | ) |
void fpr_header | ( | ) |
void fprint_pla | ( | ) |
void free_PLA | ( | ) |
bool full_row | ( | ) |
pset_family gen_primes | ( | ) |
generate_all_pairs | ( | ) |
char* get_word | ( | ) |
int greedy_best_cost | ( | ) |
sm_matrix* irred_derive_table | ( | ) |
pcover irred_gasp | ( | ) |
void irred_split_cover | ( | ) |
pcover irredundant | ( | ) |
kiss_output | ( | ) |
kiss_print_cube | ( | ) |
int label_index | ( | ) |
pcover last_gasp | ( | ) |
int lex_order | ( | ) |
int lex_order1 | ( | ) |
pcover lex_sort | ( | ) |
pcover make_disjoint | ( | ) |
pcover make_sparse | ( | ) |
int makeup_labels | ( | ) |
void map | ( | ) |
pcover map_cover_to_unate | ( | ) |
map_dcset | ( | ) |
map_output_symbolic | ( | ) |
map_symbolic | ( | ) |
pcover map_symbolic_cover | ( | ) |
pcover map_unate_to_cover | ( | ) |
void mark_irredundant | ( | ) |
void massive_count | ( | ) |
void mincov | ( | ) |
pcover mini_sort | ( | ) |
pcover minimize_exact | ( | ) |
pcover minimize_exact_literals | ( | ) |
int minimize_pair | ( | ) |
pset minterms | ( | ) |
int most_frequent | ( | ) |
pcover mv_reduce | ( | ) |
pPLA new_PLA | ( | ) |
Definition at line 644 of file cvrin.c.
00645 { 00646 pPLA PLA; 00647 00648 PLA = ALLOC(PLA_t, 1); 00649 PLA->F = PLA->D = PLA->R = (pcover) NULL; 00650 PLA->phase = (pcube) NULL; 00651 PLA->pair = (ppair) NULL; 00652 PLA->label = (char **) NULL; 00653 PLA->filename = (char *) NULL; 00654 PLA->pla_type = 0; 00655 PLA->symbolic = NIL(symbolic_t); 00656 PLA->symbolic_output = NIL(symbolic_t); 00657 return PLA; 00658 }
pcover opo | ( | ) |
pset_family opo_leaf | ( | ) |
pset_family opo_recur | ( | ) |
void opoall | ( | ) |
output_phase_setup | ( | ) |
output_symbolic_constraints | ( | ) |
pair_all | ( | ) |
ppair pair_best_cost | ( | ) |
int pair_free | ( | ) |
ppair pair_new | ( | ) |
ppair pair_save | ( | ) |
pcover pairvar | ( | ) |
void parse_pla | ( | ) |
char* pbv1 | ( | ) |
char* pc1 | ( | ) |
char* pc2 | ( | ) |
char* pc3 | ( | ) |
void phase_assignment | ( | ) |
PLA_labels | ( | ) |
PLA_permute | ( | ) |
void PLA_summary | ( | ) |
bool PLA_verify | ( | ) |
void pls_group | ( | ) |
void pls_label | ( | ) |
void pls_output | ( | ) |
pcover primes_consensus | ( | ) |
char* print_cost | ( | ) |
void print_cube | ( | ) |
void print_expanded_cube | ( | ) |
print_pair | ( | ) |
void print_trace | ( | ) |
char* ps1 | ( | ) |
qsort | ( | ) |
qst | ( | ) |
pcover random_order | ( | ) |
void read_cube | ( | ) |
int read_pla | ( | ) |
int read_symbolic | ( | ) |
pcover reduce | ( | ) |
pcube reduce_cube | ( | ) |
void repeated_phase_assignment | ( | ) |
void restore_cube_struct | ( | ) |
Definition at line 148 of file cubestr.c.
00149 { 00150 cube = temp_cube_save; /* structure copy ! */ 00151 cdata = temp_cdata_save; /* "" */ 00152 }
int rm2_contain | ( | ) |
int rm2_equal | ( | ) |
int rm_contain | ( | ) |
int rm_equal | ( | ) |
int rm_rev_contain | ( | ) |
void save_cube_struct | ( | ) |
Definition at line 131 of file cubestr.c.
00132 { 00133 temp_cube_save = cube; /* structure copy ! */ 00134 temp_cdata_save = cdata; /* "" */ 00135 00136 cube.first_part = cube.last_part = (int *) NULL; 00137 cube.first_word = cube.last_word = (int *) NULL; 00138 cube.part_size = (int *) NULL; 00139 cube.binary_mask = cube.mv_mask = (pcube) NULL; 00140 cube.fullset = cube.emptyset = (pcube) NULL; 00141 cube.var_mask = cube.temp = (pcube *) NULL; 00142 00143 cdata.part_zeros = cdata.var_zeros = cdata.parts_active = (int *) NULL; 00144 cdata.is_unate = (bool *) NULL; 00145 }
pcube sccc | ( | ) |
pcube sccc_cube | ( | ) |
pcube sccc_merge | ( | ) |
bool sccc_special_cases | ( | ) |
pcube* scofactor | ( | ) |
void select_feasible | ( | ) |
void set_adjcnt | ( | ) |
pset set_and | ( | ) |
bool set_andp | ( | ) |
pset set_clear | ( | ) |
pset set_copy | ( | ) |
pset set_diff | ( | ) |
int set_dist | ( | ) |
pset set_fill | ( | ) |
pset set_merge | ( | ) |
pset set_or | ( | ) |
int set_ord | ( | ) |
bool set_orp | ( | ) |
void set_pair | ( | ) |
void set_pair1 | ( | ) |
pPLA set_phase | ( | ) |
void set_write | ( | ) |
pset set_xor | ( | ) |
void setdown_cube | ( | ) |
Definition at line 92 of file cubestr.c.
00093 { 00094 register int i, var; 00095 00096 FREE(cube.first_part); 00097 FREE(cube.last_part); 00098 FREE(cube.first_word); 00099 FREE(cube.last_word); 00100 FREE(cube.sparse); 00101 00102 free_cube(cube.binary_mask); 00103 free_cube(cube.mv_mask); 00104 free_cube(cube.fullset); 00105 free_cube(cube.emptyset); 00106 for(var = 0; var < cube.num_vars; var++) 00107 free_cube(cube.var_mask[var]); 00108 FREE(cube.var_mask); 00109 00110 for(i = 0; i < CUBE_TEMP; i++) 00111 free_cube(cube.temp[i]); 00112 FREE(cube.temp); 00113 00114 FREE(cdata.part_zeros); 00115 FREE(cdata.var_zeros); 00116 FREE(cdata.parts_active); 00117 FREE(cdata.is_unate); 00118 00119 cube.first_part = cube.last_part = (int *) NULL; 00120 cube.first_word = cube.last_word = (int *) NULL; 00121 cube.sparse = (int *) NULL; 00122 cube.binary_mask = cube.mv_mask = (pcube) NULL; 00123 cube.fullset = cube.emptyset = (pcube) NULL; 00124 cube.var_mask = cube.temp = (pcube *) NULL; 00125 00126 cdata.part_zeros = cdata.var_zeros = cdata.parts_active = (int *) NULL; 00127 cdata.is_unate = (bool *) NULL; 00128 }
bool setp_disjoint | ( | ) |
bool setp_empty | ( | ) |
bool setp_equal | ( | ) |
bool setp_full | ( | ) |
bool setp_implies | ( | ) |
void setup_BB_CC | ( | ) |
pset_family sf_active | ( | ) |
pset_family sf_addcol | ( | ) |
pset_family sf_addset | ( | ) |
pset sf_and | ( | ) |
pset_family sf_append | ( | ) |
void sf_bm_print | ( | ) |
pset_family sf_bm_read | ( | ) |
void sf_cleanup | ( | ) |
Definition at line 371 of file set.c.
00372 { 00373 register pset_family p, pnext; 00374 for(p = set_family_garbage; p != (pset_family) NULL; p = pnext) { 00375 pnext = p->next; 00376 FREE(p); 00377 } 00378 set_family_garbage = (pset_family) NULL; 00379 }
pset_family sf_compress | ( | ) |
pset_family sf_contain | ( | ) |
pset_family sf_copy | ( | ) |
pset_family sf_copy_col | ( | ) |
int* sf_count | ( | ) |
int* sf_count_restricted | ( | ) |
void sf_debug_print | ( | ) |
pset_family sf_delc | ( | ) |
pset_family sf_delcol | ( | ) |
void sf_delset | ( | ) |
pset_family sf_dupl | ( | ) |
void sf_free | ( | ) |
pset_family sf_inactive | ( | ) |
pset_family sf_ind_contain | ( | ) |
pset_family sf_ind_unlist | ( | ) |
pset_family sf_join | ( | ) |
pset* sf_list | ( | ) |
pset_family sf_merge | ( | ) |
pset_family sf_new | ( | ) |
pset sf_or | ( | ) |
pset_family sf_permute | ( | ) |
void sf_print | ( | ) |
pset_family sf_read | ( | ) |
pset_family sf_rev_contain | ( | ) |
pset_family sf_save | ( | ) |
pset* sf_sort | ( | ) |
pset_family sf_transpose | ( | ) |
pset_family sf_union | ( | ) |
pset_family sf_unlist | ( | ) |
void sf_write | ( | ) |
pcover sharp | ( | ) |
void simp_comp | ( | ) |
pcover simplify | ( | ) |
pcover size_sort | ( | ) |
void size_stamp | ( | ) |
void skip_line | ( | ) |
int so_both_do_espresso | ( | ) |
int so_both_do_exact | ( | ) |
void so_both_espresso | ( | ) |
int so_both_save | ( | ) |
int so_do_espresso | ( | ) |
int so_do_exact | ( | ) |
void so_espresso | ( | ) |
int so_save | ( | ) |
pcover sort_reduce | ( | ) |
char* strsav | ( | ) |
pcover super_gasp | ( | ) |
symbolic_hack_labels | ( | ) |
bool taut_special_cases | ( | ) |
bool tautology | ( | ) |
void totals | ( | ) |
pset_family unate_compl | ( | ) |
pset_family unate_complement | ( | ) |
pset_family unate_intersect | ( | ) |
pcover uncof_output | ( | ) |
pcover unravel | ( | ) |
pcover unravel_range | ( | ) |
int util_getopt | ( | ) |
bool verify | ( | ) |
struct pla_types_struct pla_types[] |
struct cdata_struct cdata temp_cdata_save |
struct cube_struct cube temp_cube_save |
int total_calls[TIME_COUNT] |
char* total_name[TIME_COUNT] |
long total_time[TIME_COUNT] |