static YAP_Bool init_bdd(void) { mgr_ex = (DdManager **)realloc(mgr_ex, (ex + 1) * sizeof(DdManager *)); mgr_ex[ex] = Cudd_Init(0, 0, UNIQUE_SLOTS, CACHE_SLOTS, 5120); Cudd_AutodynEnable(mgr_ex[ex], CUDD_REORDER_GROUP_SIFT); Cudd_SetMaxCacheHard(mgr_ex[ex], 0); Cudd_SetLooseUpTo(mgr_ex[ex], 0); Cudd_SetMinHit(mgr_ex[ex], 15); bVar2mVar_ex = (int **)realloc(bVar2mVar_ex, (ex + 1) * sizeof(int *)); bVar2mVar_ex[ex] = NULL; vars_ex = (variable **)realloc(vars_ex, (ex + 1) * sizeof(variable *)); vars_ex[ex] = NULL; nVars_ex = (int *)realloc(nVars_ex, (ex + 1) * sizeof(int)); nVars_ex[ex] = 0; probs_ex = (double **)realloc(probs_ex, (ex + 1) * sizeof(double *)); probs_ex[ex] = NULL; boolVars_ex = (int *)realloc(boolVars_ex, (ex + 1) * sizeof(int)); boolVars_ex[ex] = 0; return 1; }
static YAP_Bool init_test(void) { YAP_Term arg1; arg1 = YAP_ARG1; nRules = YAP_IntOfTerm(arg1); ex = 0; mgr_ex = (DdManager **)malloc((ex + 1) * sizeof(DdManager *)); mgr_ex[ex] = Cudd_Init(0, 0, UNIQUE_SLOTS, CACHE_SLOTS, 5120); Cudd_AutodynEnable(mgr_ex[ex], CUDD_REORDER_GROUP_SIFT); Cudd_SetMaxCacheHard(mgr_ex[ex], 0); Cudd_SetLooseUpTo(mgr_ex[ex], 0); Cudd_SetMinHit(mgr_ex[ex], 15); bVar2mVar_ex = (int **)malloc((ex + 1) * sizeof(int *)); bVar2mVar_ex[ex] = NULL; vars_ex = (variable **)malloc((ex + 1) * sizeof(variable *)); vars_ex[ex] = NULL; nVars_ex = (int *)malloc((ex + 1) * sizeof(int)); nVars_ex[ex] = 0; probs_ex = (double **)malloc((ex + 1) * sizeof(double *)); probs_ex[ex] = NULL; boolVars_ex = (int *)malloc((ex + 1) * sizeof(int)); boolVars_ex[ex] = 0; rules = (int *)malloc(nRules * sizeof(int)); return 1; }
/** * Creates a new BDDManager. * * @param maxMemoryInMB The amount of memory to be used. Must be <4096 as CUDD does not support more * @param reorderingMaxBlowup The maximal allowed blowup during sifting steps in the reordering algorithm. Standard is 1.2 - use 1.1 to have less reordering done. A value of 1.0 results in greedy reordering. * @author ehlers */ BFBddManager::BFBddManager(unsigned int maxMemoryInMB, float reorderingMaxBlowup) { mgr = Cudd_Init(0, 0, CUDD_UNIQUE_SLOTS, CUDD_CACHE_SLOTS, (long) maxMemoryInMB * 1024UL * 1024UL); // Configuring the manager Cudd_AutodynEnable(mgr, CUDD_REORDER_SIFT); Cudd_SetMaxGrowth(mgr, reorderingMaxBlowup); Cudd_SetMinHit(mgr, 1); setAutomaticOptimisation(true); }