142 size = manager->
size;
154 max = pow(2.0,(
double)n);
164 if (varSeen == NULL) {
168 for (i = 0; i <
size; i++) {
171 for (i = 0; i < n; i++) {
172 index = (xVars[i])->index;
173 varSeen[manager->
invperm[index]] = 0;
187 if (mtable == NULL) {
188 (void) fprintf(manager->
out,
189 "Cudd_SplitSet: out-of-memory.\n");
259 double *dummy, numT, numE;
310 if (!
st__lookup(mtable, (
const char *)Nv, (
char **)&dummy))
return(NULL);
311 numT = *dummy/(2*(1<<index));
312 }
else if (Nv == one) {
313 numT = max/(2*(1<<index));
319 if (!
st__lookup(mtable, (
const char *)Nnv, (
char **)&dummy))
return(NULL);
320 numE = *dummy/(2*(1<<index));
321 }
else if (Nnv == one) {
322 numE = max/(2*(1<<index));
358 Nnv,(n-numT),max,index+1);
381 Nv, (n-numE),max,index+1);
412 if (result == NULL) {
430 if (result == NULL) {
466 if (result == NULL) {
510 size = manager->
size;
517 for (i = size-1; i >= 0; i--) {
528 for (i = size-1; i >= 0; i--) {
529 if(varSeen[i] == 0) {
543 for (i = 0; i < numVars; i++)
577 max = pow(2.0, (
double)numVars);
609 if (result == NULL) {
641 register double min_v,min_nv;
642 register double min_N;
649 if (node ==
DD_ONE(manager)) {
656 if (
st__lookup(table, (
const char *)node, (
char **)&dummy)) {
670 return ((
double)CUDD_OUT_OF_MEM);
672 if (min_nv == (
double)CUDD_OUT_OF_MEM)
673 return ((
double)CUDD_OUT_OF_MEM);
674 min_N = min_v + min_nv;
679 return((
double)CUDD_OUT_OF_MEM);
685 return((
double)CUDD_OUT_OF_MEM);
void st__free_table(st__table *table)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
int st__insert(st__table *table, const char *key, char *value)
#define Cudd_IsConstant(node)
#define Cudd_Regular(node)
enum st__retval cuddStCountfree(char *key, char *value, char *arg)
int st__ptrcmp(const char *, const char *)
#define ABC_ALLOC(type, num)
st__table * st__init_table(st__compare_func_type compare, st__hash_func_type hash)
#define Cudd_IsComplement(node)
#define ABC_NAMESPACE_IMPL_END
#define cuddIsConstant(node)
static double bddAnnotateMintermCount(DdManager *manager, DdNode *node, double max, st__table *table)
int st__foreach(st__table *table, enum st__retval(*func)(char *, char *, char *), char *arg)
DdNode * Cudd_SplitSet(DdManager *manager, DdNode *S, DdNode **xVars, int n, double m)
#define ABC_NAMESPACE_IMPL_START
int st__lookup(st__table *table, const char *key, char **value)
static ABC_NAMESPACE_IMPL_START DdNode * selectMintermsFromUniverse(DdManager *manager, int *varSeen, double n)
DdNode * cuddBddAndRecur(DdManager *manager, DdNode *f, DdNode *g)
DdNode * cuddSplitSetRecur(DdManager *manager, st__table *mtable, int *varSeen, DdNode *p, double n, double max, int index)
static DdNode * mintermsFromUniverse(DdManager *manager, DdNode **vars, int numVars, double n, int index)
int st__ptrhash(const char *, int)
DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)
DdNode * cuddBddIteRecur(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)