12 this->cuddManager.SetMaxMemory(
16 this->cuddManager.SetEpsilon(settings.getConstantPrecision());
20 switch (reorderingTechniqueAsSetting) {
22 this->reorderingTechnique = CUDD_REORDER_NONE;
25 this->reorderingTechnique = CUDD_REORDER_RANDOM;
28 this->reorderingTechnique = CUDD_REORDER_RANDOM_PIVOT;
31 this->reorderingTechnique = CUDD_REORDER_SIFT;
34 this->reorderingTechnique = CUDD_REORDER_SIFT_CONVERGE;
37 this->reorderingTechnique = CUDD_REORDER_SYMM_SIFT;
40 this->reorderingTechnique = CUDD_REORDER_SYMM_SIFT_CONV;
43 this->reorderingTechnique = CUDD_REORDER_GROUP_SIFT;
46 this->reorderingTechnique = CUDD_REORDER_GROUP_SIFT_CONV;
49 this->reorderingTechnique = CUDD_REORDER_WINDOW2;
52 this->reorderingTechnique = CUDD_REORDER_WINDOW2_CONV;
55 this->reorderingTechnique = CUDD_REORDER_WINDOW3;
58 this->reorderingTechnique = CUDD_REORDER_WINDOW3_CONV;
61 this->reorderingTechnique = CUDD_REORDER_WINDOW4;
64 this->reorderingTechnique = CUDD_REORDER_WINDOW4_CONV;
67 this->reorderingTechnique = CUDD_REORDER_ANNEALING;
70 this->reorderingTechnique = CUDD_REORDER_GENETIC;
73 this->reorderingTechnique = CUDD_REORDER_EXACT;
77 this->allowDynamicReordering(settings.isReorderingEnabled());
115 getBddEncodingLessOrEqualThanRec(minimalValue, maximalValue & ~(1ull << newRemainingDdVariables), bound, Cudd_T(cube), newRemainingDdVariables);
118 getBddEncodingLessOrEqualThanRec(minimalValue | (1ull << newRemainingDdVariables), maximalValue, bound, Cudd_T(cube), newRemainingDdVariables);
124 cuddUniqueInter(cuddManager.getManager(), Cudd_NodeReadIndex(cube), Cudd_Regular(thenResult), complemented ? Cudd_Not(elseResult) : elseResult);
154 boost::optional<uint_fast64_t>
const& position) {
155 std::vector<InternalBdd<DdType::CUDD>> result;
158 for (uint64_t layer = 0; layer < numberOfLayers; ++layer) {
162 for (uint64_t layer = 0; layer < numberOfLayers; ++layer) {
170 cuddManager.MakeTreeNode(result.front().getIndex(), numberOfLayers, MTR_FIXED);
173 numberOfDdVariables += numberOfLayers;