#ifndef SIGNATURE_H_821345564161464168268256
#define SIGNATURE_H_821345564161464168268256

#if BPI == 16
#define ODD_MASK 0xaaaa
#define EVEN_MASK 0x5555
#else
#define ODD_MASK 0xaaaaaaaa
#define EVEN_MASK 0x55555555
#endif

#define POSITIVE 1
#define NEGATIVE 0

#define PRESENT 1
#define ABSENT 0

#define RAISED 2

typedef struct {
	int variable;
	int free_count;
	} VAR;

/* black_white.c */ int setup_bw(pset_family R, pset c); /** MM: int na kontrolu chyby */
/* black_white.c */ void free_bw(void);
/* black_white.c */ int black_white(void);
/* black_white.c */ void split_list(pset_family R, int v);
/* black_white.c */ void merge_list(void);
/* canonical.c */ int is_minterm();
/* canonical.c */ pcover find_canonical_cover(pset_family F1, pset_family D, pset_family R);
/* essentiality.c */ pcover etr_order(pset_family F, pset_family E, pset_family R, pset c, pset d);
/* essentiality.c */ void aux_etr_order(pset_family F, pset_family E, pset_family R, pset c, pset d);
/* essentiality.c */ pcover get_mins(pset c);
/* essentiality.c */ int ascending(const void *p1, const void *p2);
/* util_signature.c */ void s_totals(long int time, int i);
/* sigma.c */ pcube get_sigma(pset_family R, register pset c);
/* sigma.c */ void set_not(pset c);
/* signature.c */ pcover signature(pset_family F1, pset_family D1, pset_family R1);
/* signature.c */ pcover generate_primes(pset_family F, pset_family R);
/* signature_exact.c */ pcover signature_minimize_exact(pset_family ESCubes, pset_family ESSet);
/* signature_exact.c */ sm_matrix *signature_form_table(pset_family ESCubes, pset_family ESSet);

#endif //SIGNATURE_H_821345564161464168268256
