svf-tools 1.0.482 → 1.0.485
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +32 -32
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +11 -11
- package/SVF-doxygen/html/html/CFLAlias_8cpp.html +1 -0
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +46 -13
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +36 -13
- package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +74 -77
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +165 -39
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +10 -10
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8h.html +4 -4
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/Casting_8h_source.html +2 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -3
- package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +6 -4
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Options_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -13
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +12 -12
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +3 -2
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/TCT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +2 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +54 -53
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +70 -63
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +415 -95
- package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +58 -58
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -36
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +1 -1
- package/SVF-doxygen/html/html/cuddInt_8c.html +30 -30
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +3 -3
- package/SVF-doxygen/html/html/cuddInt_8h.html +10 -10
- package/SVF-doxygen/html/html/cudd_8h.html +14 -14
- package/SVF-doxygen/html/html/cudd_8h_source.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions_a.html +11 -10
- package/SVF-doxygen/html/html/functions_c.html +30 -23
- package/SVF-doxygen/html/html/functions_func.html +12 -11
- package/SVF-doxygen/html/html/functions_func_c.html +11 -10
- package/SVF-doxygen/html/html/functions_func_h.html +3 -2
- package/SVF-doxygen/html/html/functions_func_n.html +1 -1
- package/SVF-doxygen/html/html/functions_func_o.html +4 -9
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_func_u.html +1 -0
- package/SVF-doxygen/html/html/functions_g.html +5 -8
- package/SVF-doxygen/html/html/functions_h.html +2 -1
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_o.html +14 -21
- package/SVF-doxygen/html/html/functions_p.html +12 -9
- package/SVF-doxygen/html/html/functions_r.html +4 -4
- package/SVF-doxygen/html/html/functions_s.html +10 -8
- package/SVF-doxygen/html/html/functions_t.html +3 -3
- package/SVF-doxygen/html/html/functions_type_c.html +1 -0
- package/SVF-doxygen/html/html/functions_u.html +1 -0
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_c.html +1 -0
- package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +6 -10
- package/SVF-doxygen/html/html/globals_a.html +3 -0
- package/SVF-doxygen/html/html/globals_f.html +2 -2
- package/SVF-doxygen/html/html/globals_g.html +10 -4
- package/SVF-doxygen/html/html/globals_l.html +4 -1
- package/SVF-doxygen/html/html/globals_m.html +15 -12
- package/SVF-doxygen/html/html/globals_s.html +17 -13
- package/SVF-doxygen/html/html/globals_vars.html +26 -5
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +12 -12
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +2 -1
- package/SVF-doxygen/html/html/search/all_10.js +8 -7
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +12 -11
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +2 -2
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_7.js +4 -3
- package/SVF-doxygen/html/html/search/all_8.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +6 -5
- package/SVF-doxygen/html/html/search/all_d.js +3 -2
- package/SVF-doxygen/html/html/search/all_e.js +3 -3
- package/SVF-doxygen/html/html/search/all_f.js +7 -9
- package/SVF-doxygen/html/html/search/functions_0.js +1 -1
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_7.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -1
- package/SVF-doxygen/html/html/search/functions_e.js +4 -6
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +1 -0
- package/SVF-doxygen/html/html/search/variables_10.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +2 -0
- package/SVF-doxygen/html/html/search/variables_14.js +4 -4
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_6.js +2 -2
- package/SVF-doxygen/html/html/search/variables_7.js +4 -3
- package/SVF-doxygen/html/html/search/variables_c.js +3 -2
- package/SVF-doxygen/html/html/search/variables_d.js +1 -0
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol-members.html +10 -13
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +44 -145
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash.html +3 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +6 -5
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +4 -3
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/CFL/CFLAlias.h +50 -4
- package/include/CFL/CFLGrammar.h +9 -28
- package/include/CFL/CFLGrammar.txt +22 -1
- package/include/CFL/CFLSolver.h +10 -8
- package/include/Graphs/CFLGraph.h +0 -1
- package/include/Graphs/GraphPrinter.h +3 -3
- package/include/Util/Options.h +2 -2
- package/lib/CFL/CFGNormalizer.cpp +8 -14
- package/lib/CFL/CFLAlias.cpp +175 -6
- package/lib/CFL/CFLSolver.cpp +1 -0
- package/lib/Graphs/CFLGraph.cpp +0 -4
- package/lib/MemoryModel/PointerAnalysis.cpp +3 -0
- package/lib/Util/Options.cpp +8 -8
- package/package.json +1 -1
|
@@ -668,7 +668,7 @@ Functions</h2></td></tr>
|
|
|
668
668
|
<tr class="separator:a5722a5bf76d99cd30783ad87ba03bf96"><td class="memSeparator" colspan="2"> </td></tr>
|
|
669
669
|
<tr class="memitem:a66a70b011fca8b95fbc3953e8b1be1fe"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structDdNode.html">DdNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a> (<a class="el" href="structDdManager.html">DdManager</a> *dd, <a class="el" href="structDdNode.html">DdNode</a> *f, int i)</td></tr>
|
|
670
670
|
<tr class="separator:a66a70b011fca8b95fbc3953e8b1be1fe"><td class="memSeparator" colspan="2"> </td></tr>
|
|
671
|
-
<tr class="memitem:a3e078600dd9087c623e1bdfea00d599d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a> (<a class="el" href="structDdManager.html">DdManager</a> *dd, <a class="el" href="structDdNode.html">DdNode</a> *<a class="el" href="CFLGrammar_8txt.html#
|
|
671
|
+
<tr class="memitem:a3e078600dd9087c623e1bdfea00d599d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a> (<a class="el" href="structDdManager.html">DdManager</a> *dd, <a class="el" href="structDdNode.html">DdNode</a> *<a class="el" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, <a class="el" href="structDdNode.html">DdNode</a> *G, <a class="el" href="structDdNode.html">DdNode</a> *D)</td></tr>
|
|
672
672
|
<tr class="separator:a3e078600dd9087c623e1bdfea00d599d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
673
673
|
<tr class="memitem:a5dcbf450b32f6937bc6dba252474638d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a> (<a class="el" href="structDdManager.html">DdManager</a> *dd, <a class="el" href="structDdNode.html">DdNode</a> *f, <a class="el" href="structDdNode.html">DdNode</a> *g, <a class="el" href="structDdNode.html">DdNode</a> *D)</td></tr>
|
|
674
674
|
<tr class="separator:a5dcbf450b32f6937bc6dba252474638d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -3673,15 +3673,15 @@ Cudd_bddBooleanDiff() </li>
|
|
|
3673
3673
|
<p>SeeAlso [bddVarToConst bddVarToCanonicalSimple] </p>
|
|
3674
3674
|
|
|
3675
3675
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l03917">3917</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
3676
|
-
<div class="fragment"><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span> {</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>  <span class="keyword">register</span> <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *G, *H, *r, *f, *g, *h;</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>  <span class="keyword">register</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, toph;</div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a> = dd-><a class="code" href="structDdManager.html#a239bd99ee654742adc79b8299c2bc92e">one</a>;</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>  <span class="keywordtype">int</span> comple, change;</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span> </div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>  f = *fp;</div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>  g = *gp;</div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>  h = *hp;</div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>  H = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(h);</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>  topf = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>  topg = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>  toph = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,H-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span> </div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>  change = 0;</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> </div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>  <span class="keywordflow">if</span> (G == one) { <span class="comment">/* ITE(F,c,H) */</span></div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>  <span class="keywordflow">if</span> ((topf > toph) || (topf == toph && f > h)) {</div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>  r = h;</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>  h = f;</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>  f = r; <span class="comment">/* ITE(F,1,H) = ITE(H,1,F) */</span></div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>  <span class="keywordflow">if</span> (g != one) { <span class="comment">/* g == zero */</span></div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f); <span class="comment">/* ITE(F,0,H) = ITE(!H,0,!F) */</span></div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h);</div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>  }</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>  change = 1;</div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>  }</div><div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (H == one) { <span class="comment">/* ITE(F,G,c) */</span></div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>  <span class="keywordflow">if</span> ((topf > topg) || (topf == topg && f > g)) {</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>  r = g;</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>  g = f;</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>  f = r; <span class="comment">/* ITE(F,G,0) = ITE(G,F,0) */</span></div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>  <span class="keywordflow">if</span> (h == one) {</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f); <span class="comment">/* ITE(F,G,1) = ITE(!G,!F,1) */</span></div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>  }</div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>  change = 1;</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>  }</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h)) { <span class="comment">/* ITE(F,G,!G) = ITE(G,F,!F) */</span></div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>  <span class="keywordflow">if</span> ((topf > topg) || (topf == topg && f > g)) {</div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>  r = f;</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>  f = g;</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>  g = r;</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>  change = 1;</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>  }</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>  }</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>  <span class="comment">/* adjust pointers so that the first 2 arguments to ITE are regular */</span></div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f) != 0) { <span class="comment">/* ITE(!F,G,H) = ITE(F,H,G) */</span></div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>  r = g;</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>  g = h;</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>  h = r;</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>  change = 1;</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>  }</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>  comple = 0;</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g) != 0) { <span class="comment">/* ITE(F,!G,H) = !ITE(F,G,!H) */</span></div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h);</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>  change = 1;</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>  comple = 1;</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>  }</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>  <span class="keywordflow">if</span> (change != 0) {</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>  *fp = f;</div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>  *gp = g;</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>  *hp = h;</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>  }</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>  *topfp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,f-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>  *topgp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,g-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>  *tophp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(h)-><a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span> </div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>  <span class="keywordflow">return</span>(comple);</div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span> </div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span> } <span class="comment">/* end of bddVarToCanonical */</span></div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
3676
|
+
<div class="fragment"><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span> {</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>  <span class="keyword">register</span> <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *G, *H, *r, *f, *g, *h;</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>  <span class="keyword">register</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, toph;</div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a> = dd-><a class="code" href="structDdManager.html#a239bd99ee654742adc79b8299c2bc92e">one</a>;</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>  <span class="keywordtype">int</span> comple, change;</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span> </div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>  f = *fp;</div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>  g = *gp;</div><div class="line"><a name="l03933"></a><span class="lineno"> 3933</span>  h = *hp;</div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>  H = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(h);</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>  topf = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>  topg = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>  toph = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,H-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span> </div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>  change = 0;</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> </div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>  <span class="keywordflow">if</span> (G == one) { <span class="comment">/* ITE(F,c,H) */</span></div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>  <span class="keywordflow">if</span> ((topf > toph) || (topf == toph && f > h)) {</div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>  r = h;</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>  h = f;</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>  f = r; <span class="comment">/* ITE(F,1,H) = ITE(H,1,F) */</span></div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>  <span class="keywordflow">if</span> (g != one) { <span class="comment">/* g == zero */</span></div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f); <span class="comment">/* ITE(F,0,H) = ITE(!H,0,!F) */</span></div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h);</div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>  }</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>  change = 1;</div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>  }</div><div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (H == one) { <span class="comment">/* ITE(F,G,c) */</span></div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>  <span class="keywordflow">if</span> ((topf > topg) || (topf == topg && f > g)) {</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>  r = g;</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>  g = f;</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>  f = r; <span class="comment">/* ITE(F,G,0) = ITE(G,F,0) */</span></div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>  <span class="keywordflow">if</span> (h == one) {</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f); <span class="comment">/* ITE(F,G,1) = ITE(!G,!F,1) */</span></div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>  }</div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>  change = 1;</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>  }</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h)) { <span class="comment">/* ITE(F,G,!G) = ITE(G,F,!F) */</span></div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>  <span class="keywordflow">if</span> ((topf > topg) || (topf == topg && f > g)) {</div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>  r = f;</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>  f = g;</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>  g = r;</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>  change = 1;</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>  }</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>  }</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>  <span class="comment">/* adjust pointers so that the first 2 arguments to ITE are regular */</span></div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f) != 0) { <span class="comment">/* ITE(!F,G,H) = ITE(F,H,G) */</span></div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>  r = g;</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>  g = h;</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>  h = r;</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>  change = 1;</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>  }</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>  comple = 0;</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g) != 0) { <span class="comment">/* ITE(F,!G,H) = !ITE(F,G,!H) */</span></div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>  h = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(h);</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>  change = 1;</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>  comple = 1;</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>  }</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>  <span class="keywordflow">if</span> (change != 0) {</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>  *fp = f;</div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>  *gp = g;</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>  *hp = h;</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>  }</div><div class="line"><a name="l03994"></a><span class="lineno"> 3994</span>  *topfp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,f-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>  *topgp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,g-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>  *tophp = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,<a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(h)-><a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>);</div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span> </div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>  <span class="keywordflow">return</span>(comple);</div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span> </div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span> } <span class="comment">/* end of bddVarToCanonical */</span></div><div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
3677
3677
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
3678
3678
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
3679
3679
|
<div class="ttc" id="cuddInt_8c_html_a49e3c7508be54a84ae83273ed240e31c"><div class="ttname"><a href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a></div><div class="ttdeci">static DdNode * one</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
3680
3680
|
<div class="ttc" id="cudd_8h_html_afbbecf4f6f78f92518f4d0a477d870b6"><div class="ttname"><a href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a></div><div class="ttdeci">#define Cudd_Regular(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00382">cudd.h:382</a></div></div>
|
|
3681
3681
|
<div class="ttc" id="cudd_8h_html_a35322518c24f65f44eda9623083cb62c"><div class="ttname"><a href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a></div><div class="ttdeci">#define Cudd_IsComplement(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00410">cudd.h:410</a></div></div>
|
|
3682
3682
|
<div class="ttc" id="cuddInt_8h_html_aa7299d1217a57571ef88e9ac90530978"><div class="ttname"><a href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a></div><div class="ttdeci">#define cuddI(dd, index)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00676">cuddInt.h:676</a></div></div>
|
|
3683
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
3684
3683
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
3684
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
3685
3685
|
<div class="ttc" id="structDdManager_html_a239bd99ee654742adc79b8299c2bc92e"><div class="ttname"><a href="structDdManager.html#a239bd99ee654742adc79b8299c2bc92e">DdManager::one</a></div><div class="ttdeci">DdNode * one</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00343">cuddInt.h:343</a></div></div>
|
|
3686
3686
|
</div><!-- fragment -->
|
|
3687
3687
|
</div>
|
|
@@ -4854,7 +4854,7 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
4854
4854
|
<p>SeeAlso [Cudd_bddIteConstant Cudd_addEvalConst] </p>
|
|
4855
4855
|
|
|
4856
4856
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l03283">3283</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
4857
|
-
<div class="fragment"><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span> {</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *tmp, *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *fv, *fvn, *gv, *gvn;</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, res;</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> </div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  <span class="comment">/* Terminal cases and normalization. */</span></div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  <span class="keywordflow">if</span> (f == g) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span> </div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  <span class="comment">/* Special case: if f is regular and g is complemented,</span></div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span> <span class="comment"> ** f(1,...,1) = 1 > 0 = g(1,...,1).</span></div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span> <span class="comment"> */</span></div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  <span class="comment">/* Both are complemented: Swap and complement because</span></div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span> <span class="comment"> ** f <= g <=> g' <= f' and we want the second argument to be regular.</span></div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span> <span class="comment"> */</span></div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  tmp = g;</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f) && g < f) {</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  tmp = g;</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  }</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span> </div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="comment">/* Now g is regular and, if f is not regular, f < g. */</span></div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(1); <span class="comment">/* no need to test against zero */</span></div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(0); <span class="comment">/* since at this point g != one */</span></div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f) == g) <span class="keywordflow">return</span>(0); <span class="comment">/* because neither is constant */</span></div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <span class="keywordflow">if</span> (f == zero) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span> </div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  <span class="comment">/* Here neither f nor g is constant. */</span></div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> </div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  tmp = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,(<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>)<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>,f,g);</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  <span class="keywordflow">return</span>(tmp == one);</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  }</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span> </div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[g-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  }</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>  fv = fvn = f;</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  }</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(g); gvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(g);</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  gv = gvn = g;</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>  }</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span> </div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  <span class="comment">/* Recursive calls. Since we want to maximize the probability of</span></div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> <span class="comment"> ** the special case f(1,...,1) > g(1,...,1), we consider the negative</span></div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span> <span class="comment"> ** cofactors first. Indeed, the complementation parity of the positive</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span> <span class="comment"> ** cofactors is the same as the one of the parent functions.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span> <span class="comment"> */</span></div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  res = <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fvn,gvn) && <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fv,gv);</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span> </div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  <span class="comment">/* Store result in cache and return. */</span></div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,(<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>)<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>,f,g,(res ? one : zero));</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span> </div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span> } <span class="comment">/* end of Cudd_bddLeq */</span></div><div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
4857
|
+
<div class="fragment"><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span> {</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *tmp, *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *fv, *fvn, *gv, *gvn;</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, res;</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> </div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  <span class="comment">/* Terminal cases and normalization. */</span></div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  <span class="keywordflow">if</span> (f == g) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span> </div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  <span class="comment">/* Special case: if f is regular and g is complemented,</span></div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span> <span class="comment"> ** f(1,...,1) = 1 > 0 = g(1,...,1).</span></div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span> <span class="comment"> */</span></div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  <span class="comment">/* Both are complemented: Swap and complement because</span></div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span> <span class="comment"> ** f <= g <=> g' <= f' and we want the second argument to be regular.</span></div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span> <span class="comment"> */</span></div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  tmp = g;</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f) && g < f) {</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  tmp = g;</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  }</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span> </div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  <span class="comment">/* Now g is regular and, if f is not regular, f < g. */</span></div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(1); <span class="comment">/* no need to test against zero */</span></div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(0); <span class="comment">/* since at this point g != one */</span></div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f) == g) <span class="keywordflow">return</span>(0); <span class="comment">/* because neither is constant */</span></div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  <span class="keywordflow">if</span> (f == zero) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span> </div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>  <span class="comment">/* Here neither f nor g is constant. */</span></div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span> </div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>  tmp = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,(<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>)<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>,f,g);</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  <span class="keywordflow">return</span>(tmp == one);</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  }</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span> </div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[g-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  }</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>  fv = fvn = f;</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  }</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(g); gvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(g);</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  gv = gvn = g;</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>  }</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span> </div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  <span class="comment">/* Recursive calls. Since we want to maximize the probability of</span></div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> <span class="comment"> ** the special case f(1,...,1) > g(1,...,1), we consider the negative</span></div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span> <span class="comment"> ** cofactors first. Indeed, the complementation parity of the positive</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span> <span class="comment"> ** cofactors is the same as the one of the parent functions.</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span> <span class="comment"> */</span></div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  res = <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fvn,gvn) && <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fv,gv);</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span> </div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  <span class="comment">/* Store result in cache and return. */</span></div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,(<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>)<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>,f,g,(res ? one : zero));</div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span> </div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span> } <span class="comment">/* end of Cudd_bddLeq */</span></div><div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
4858
4858
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
4859
4859
|
<div class="ttc" id="cuddInt_8c_html_a49e3c7508be54a84ae83273ed240e31c"><div class="ttname"><a href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a></div><div class="ttdeci">static DdNode * one</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
4860
4860
|
<div class="ttc" id="cudd_8h_html_afbbecf4f6f78f92518f4d0a477d870b6"><div class="ttname"><a href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a></div><div class="ttdeci">#define Cudd_Regular(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00382">cudd.h:382</a></div></div>
|
|
@@ -4864,8 +4864,8 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
4864
4864
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
4865
4865
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
4866
4866
|
<div class="ttc" id="cuddInt_8c_html_a89a46089e8572876a1521cdee6cb31a2"><div class="ttname"><a href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a></div><div class="ttdeci">int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03283">cuddInt.c:3283</a></div></div>
|
|
4867
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
4868
4867
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
4868
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
4869
4869
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
4870
4870
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
4871
4871
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
@@ -4921,7 +4921,7 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
4921
4921
|
<p>SeeAlso [Cudd_EquivDC Cudd_bddLeq Cudd_bddIteConstant] </p>
|
|
4922
4922
|
|
|
4923
4923
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l16870">16870</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
4924
|
-
<div class="fragment"><div class="line"><a name="l16875"></a><span class="lineno">16875</span>  {</div><div class="line"><a name="l16876"></a><span class="lineno">16876</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp, *One, *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *G;</div><div class="line"><a name="l16877"></a><span class="lineno">16877</span>  <a class="code" href="structDdNode.html">DdNode</a> *Ft, *Fe, *Gt, *Ge, *Dt, *De;</div><div class="line"><a name="l16878"></a><span class="lineno">16878</span>  <span class="keywordtype">int</span> res;</div><div class="line"><a name="l16879"></a><span class="lineno">16879</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flevel, glevel, dlevel, top;</div><div class="line"><a name="l16880"></a><span class="lineno">16880</span> </div><div class="line"><a name="l16881"></a><span class="lineno">16881</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16882"></a><span class="lineno">16882</span> </div><div class="line"><a name="l16883"></a><span class="lineno">16883</span>  One = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l16884"></a><span class="lineno">16884</span> </div><div class="line"><a name="l16885"></a><span class="lineno">16885</span>  <span class="comment">/* Check terminal cases. */</span></div><div class="line"><a name="l16886"></a><span class="lineno">16886</span>  <span class="keywordflow">if</span> (f == g || g == One || f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == One ||</div><div class="line"><a name="l16887"></a><span class="lineno">16887</span>  D == f || D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l16888"></a><span class="lineno">16888</span>  <span class="comment">/* Check for two-operand cases. */</span></div><div class="line"><a name="l16889"></a><span class="lineno">16889</span>  <span class="keywordflow">if</span> (D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == g || D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f))</div><div class="line"><a name="l16890"></a><span class="lineno">16890</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,f,g));</div><div class="line"><a name="l16891"></a><span class="lineno">16891</span>  <span class="keywordflow">if</span> (g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f)) <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,f,D));</div><div class="line"><a name="l16892"></a><span class="lineno">16892</span>  <span class="keywordflow">if</span> (f == One) <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g),D));</div><div class="line"><a name="l16893"></a><span class="lineno">16893</span> </div><div class="line"><a name="l16894"></a><span class="lineno">16894</span>  <span class="comment">/* From now on, f, g, and D are non-constant, distinct, and</span></div><div class="line"><a name="l16895"></a><span class="lineno">16895</span> <span class="comment"> ** non-complementary. */</span></div><div class="line"><a name="l16896"></a><span class="lineno">16896</span> </div><div class="line"><a name="l16897"></a><span class="lineno">16897</span>  <span class="comment">/* Normalize call to increase cache efficiency. We rely on the</span></div><div class="line"><a name="l16898"></a><span class="lineno">16898</span> <span class="comment"> ** fact that f <= g unless D is equivalent to not(g) <= not(f)</span></div><div class="line"><a name="l16899"></a><span class="lineno">16899</span> <span class="comment"> ** unless D and to f <= D unless g. We make sure that D is</span></div><div class="line"><a name="l16900"></a><span class="lineno">16900</span> <span class="comment"> ** regular, and that at most one of f and g is complemented. We also</span></div><div class="line"><a name="l16901"></a><span class="lineno">16901</span> <span class="comment"> ** ensure that when two operands can be swapped, the one with the</span></div><div class="line"><a name="l16902"></a><span class="lineno">16902</span> <span class="comment"> ** lowest address comes first. */</span></div><div class="line"><a name="l16903"></a><span class="lineno">16903</span> </div><div class="line"><a name="l16904"></a><span class="lineno">16904</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(D)) {</div><div class="line"><a name="l16905"></a><span class="lineno">16905</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l16906"></a><span class="lineno">16906</span>  <span class="comment">/* Special case: if f is regular and g is complemented,</span></div><div class="line"><a name="l16907"></a><span class="lineno">16907</span> <span class="comment"> ** f(1,...,1) = 1 > 0 = g(1,...,1). If D(1,...,1) = 0, return 0.</span></div><div class="line"><a name="l16908"></a><span class="lineno">16908</span> <span class="comment"> */</span></div><div class="line"><a name="l16909"></a><span class="lineno">16909</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l16910"></a><span class="lineno">16910</span>  <span class="comment">/* !g <= D unless !f or !D <= g unless !f */</span></div><div class="line"><a name="l16911"></a><span class="lineno">16911</span>  tmp = D;</div><div class="line"><a name="l16912"></a><span class="lineno">16912</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16913"></a><span class="lineno">16913</span>  <span class="keywordflow">if</span> (g < tmp) {</div><div class="line"><a name="l16914"></a><span class="lineno">16914</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l16915"></a><span class="lineno">16915</span>  g = tmp;</div><div class="line"><a name="l16916"></a><span class="lineno">16916</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16917"></a><span class="lineno">16917</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16918"></a><span class="lineno">16918</span>  }</div><div class="line"><a name="l16919"></a><span class="lineno">16919</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16920"></a><span class="lineno">16920</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l16921"></a><span class="lineno">16921</span>  <span class="comment">/* !D <= !f unless g or !D <= g unless !f */</span></div><div class="line"><a name="l16922"></a><span class="lineno">16922</span>  tmp = f;</div><div class="line"><a name="l16923"></a><span class="lineno">16923</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(D);</div><div class="line"><a name="l16924"></a><span class="lineno">16924</span>  <span class="keywordflow">if</span> (tmp < g) {</div><div class="line"><a name="l16925"></a><span class="lineno">16925</span>  D = g;</div><div class="line"><a name="l16926"></a><span class="lineno">16926</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16927"></a><span class="lineno">16927</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16928"></a><span class="lineno">16928</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16929"></a><span class="lineno">16929</span>  }</div><div class="line"><a name="l16930"></a><span class="lineno">16930</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16931"></a><span class="lineno">16931</span>  <span class="comment">/* f <= D unless g or !D <= !f unless g */</span></div><div class="line"><a name="l16932"></a><span class="lineno">16932</span>  tmp = D;</div><div class="line"><a name="l16933"></a><span class="lineno">16933</span>  D = g;</div><div class="line"><a name="l16934"></a><span class="lineno">16934</span>  <span class="keywordflow">if</span> (tmp < f) {</div><div class="line"><a name="l16935"></a><span class="lineno">16935</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16936"></a><span class="lineno">16936</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16937"></a><span class="lineno">16937</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16938"></a><span class="lineno">16938</span>  g = tmp;</div><div class="line"><a name="l16939"></a><span class="lineno">16939</span>  }</div><div class="line"><a name="l16940"></a><span class="lineno">16940</span>  }</div><div class="line"><a name="l16941"></a><span class="lineno">16941</span>  }</div><div class="line"><a name="l16942"></a><span class="lineno">16942</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16943"></a><span class="lineno">16943</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l16944"></a><span class="lineno">16944</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l16945"></a><span class="lineno">16945</span>  <span class="comment">/* !g <= !f unless D or !g <= D unless !f */</span></div><div class="line"><a name="l16946"></a><span class="lineno">16946</span>  tmp = f;</div><div class="line"><a name="l16947"></a><span class="lineno">16947</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l16948"></a><span class="lineno">16948</span>  <span class="keywordflow">if</span> (D < tmp) {</div><div class="line"><a name="l16949"></a><span class="lineno">16949</span>  g = D;</div><div class="line"><a name="l16950"></a><span class="lineno">16950</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16951"></a><span class="lineno">16951</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16952"></a><span class="lineno">16952</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16953"></a><span class="lineno">16953</span>  }</div><div class="line"><a name="l16954"></a><span class="lineno">16954</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16955"></a><span class="lineno">16955</span>  <span class="comment">/* f <= g unless D or !g <= !f unless D */</span></div><div class="line"><a name="l16956"></a><span class="lineno">16956</span>  <span class="keywordflow">if</span> (g < f) {</div><div class="line"><a name="l16957"></a><span class="lineno">16957</span>  tmp = g;</div><div class="line"><a name="l16958"></a><span class="lineno">16958</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16959"></a><span class="lineno">16959</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16960"></a><span class="lineno">16960</span>  }</div><div class="line"><a name="l16961"></a><span class="lineno">16961</span>  }</div><div class="line"><a name="l16962"></a><span class="lineno">16962</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16963"></a><span class="lineno">16963</span>  <span class="comment">/* f <= g unless D or f <= D unless g */</span></div><div class="line"><a name="l16964"></a><span class="lineno">16964</span>  <span class="keywordflow">if</span> (D < g) {</div><div class="line"><a name="l16965"></a><span class="lineno">16965</span>  tmp = D;</div><div class="line"><a name="l16966"></a><span class="lineno">16966</span>  D = g;</div><div class="line"><a name="l16967"></a><span class="lineno">16967</span>  g = tmp;</div><div class="line"><a name="l16968"></a><span class="lineno">16968</span>  }</div><div class="line"><a name="l16969"></a><span class="lineno">16969</span>  }</div><div class="line"><a name="l16970"></a><span class="lineno">16970</span>  }</div><div class="line"><a name="l16971"></a><span class="lineno">16971</span> </div><div class="line"><a name="l16972"></a><span class="lineno">16972</span>  <span class="comment">/* From now on, D is regular. */</span></div><div class="line"><a name="l16973"></a><span class="lineno">16973</span> </div><div class="line"><a name="l16974"></a><span class="lineno">16974</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16975"></a><span class="lineno">16975</span>  tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd,<a class="code" href="cuddInt_8h.html#ae51310f4dbc382140288e235e21840f3">DD_BDD_LEQ_UNLESS_TAG</a>,f,g,D);</div><div class="line"><a name="l16976"></a><span class="lineno">16976</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(tmp == One);</div><div class="line"><a name="l16977"></a><span class="lineno">16977</span> </div><div class="line"><a name="l16978"></a><span class="lineno">16978</span>  <span class="comment">/* Find splitting variable. */</span></div><div class="line"><a name="l16979"></a><span class="lineno">16979</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l16980"></a><span class="lineno">16980</span>  flevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16981"></a><span class="lineno">16981</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l16982"></a><span class="lineno">16982</span>  glevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16983"></a><span class="lineno">16983</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(flevel,glevel);</div><div class="line"><a name="l16984"></a><span class="lineno">16984</span>  dlevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[D-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16985"></a><span class="lineno">16985</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(top,dlevel);</div><div class="line"><a name="l16986"></a><span class="lineno">16986</span> </div><div class="line"><a name="l16987"></a><span class="lineno">16987</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16988"></a><span class="lineno">16988</span>  <span class="keywordflow">if</span> (top == flevel) {</div><div class="line"><a name="l16989"></a><span class="lineno">16989</span>  Ft = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l16990"></a><span class="lineno">16990</span>  Fe = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16991"></a><span class="lineno">16991</span>  <span class="keywordflow">if</span> (F != f) {</div><div class="line"><a name="l16992"></a><span class="lineno">16992</span>  Ft = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Ft);</div><div class="line"><a name="l16993"></a><span class="lineno">16993</span>  Fe = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Fe);</div><div class="line"><a name="l16994"></a><span class="lineno">16994</span>  }</div><div class="line"><a name="l16995"></a><span class="lineno">16995</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16996"></a><span class="lineno">16996</span>  Ft = Fe = f;</div><div class="line"><a name="l16997"></a><span class="lineno">16997</span>  }</div><div class="line"><a name="l16998"></a><span class="lineno">16998</span>  <span class="keywordflow">if</span> (top == glevel) {</div><div class="line"><a name="l16999"></a><span class="lineno">16999</span>  Gt = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l17000"></a><span class="lineno">17000</span>  Ge = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l17001"></a><span class="lineno">17001</span>  <span class="keywordflow">if</span> (G != g) {</div><div class="line"><a name="l17002"></a><span class="lineno">17002</span>  Gt = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gt);</div><div class="line"><a name="l17003"></a><span class="lineno">17003</span>  Ge = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Ge);</div><div class="line"><a name="l17004"></a><span class="lineno">17004</span>  }</div><div class="line"><a name="l17005"></a><span class="lineno">17005</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17006"></a><span class="lineno">17006</span>  Gt = Ge = g;</div><div class="line"><a name="l17007"></a><span class="lineno">17007</span>  }</div><div class="line"><a name="l17008"></a><span class="lineno">17008</span>  <span class="keywordflow">if</span> (top == dlevel) {</div><div class="line"><a name="l17009"></a><span class="lineno">17009</span>  Dt = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(D);</div><div class="line"><a name="l17010"></a><span class="lineno">17010</span>  De = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(D);</div><div class="line"><a name="l17011"></a><span class="lineno">17011</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17012"></a><span class="lineno">17012</span>  Dt = De = D;</div><div class="line"><a name="l17013"></a><span class="lineno">17013</span>  }</div><div class="line"><a name="l17014"></a><span class="lineno">17014</span> </div><div class="line"><a name="l17015"></a><span class="lineno">17015</span>  <span class="comment">/* Solve recursively. */</span></div><div class="line"><a name="l17016"></a><span class="lineno">17016</span>  res = <a class="code" href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a>(dd,Ft,Gt,Dt);</div><div class="line"><a name="l17017"></a><span class="lineno">17017</span>  <span class="keywordflow">if</span> (res != 0) {</div><div class="line"><a name="l17018"></a><span class="lineno">17018</span>  res = <a class="code" href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a>(dd,Fe,Ge,De);</div><div class="line"><a name="l17019"></a><span class="lineno">17019</span>  }</div><div class="line"><a name="l17020"></a><span class="lineno">17020</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd,<a class="code" href="cuddInt_8h.html#ae51310f4dbc382140288e235e21840f3">DD_BDD_LEQ_UNLESS_TAG</a>,f,g,D,<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(One,!res));</div><div class="line"><a name="l17021"></a><span class="lineno">17021</span> </div><div class="line"><a name="l17022"></a><span class="lineno">17022</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l17023"></a><span class="lineno">17023</span> </div><div class="line"><a name="l17024"></a><span class="lineno">17024</span>  } <span class="comment">/* end of Cudd_bddLeqUnless */</span></div><div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
4924
|
+
<div class="fragment"><div class="line"><a name="l16875"></a><span class="lineno">16875</span>  {</div><div class="line"><a name="l16876"></a><span class="lineno">16876</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp, *One, *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *G;</div><div class="line"><a name="l16877"></a><span class="lineno">16877</span>  <a class="code" href="structDdNode.html">DdNode</a> *Ft, *Fe, *Gt, *Ge, *Dt, *De;</div><div class="line"><a name="l16878"></a><span class="lineno">16878</span>  <span class="keywordtype">int</span> res;</div><div class="line"><a name="l16879"></a><span class="lineno">16879</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flevel, glevel, dlevel, top;</div><div class="line"><a name="l16880"></a><span class="lineno">16880</span> </div><div class="line"><a name="l16881"></a><span class="lineno">16881</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16882"></a><span class="lineno">16882</span> </div><div class="line"><a name="l16883"></a><span class="lineno">16883</span>  One = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l16884"></a><span class="lineno">16884</span> </div><div class="line"><a name="l16885"></a><span class="lineno">16885</span>  <span class="comment">/* Check terminal cases. */</span></div><div class="line"><a name="l16886"></a><span class="lineno">16886</span>  <span class="keywordflow">if</span> (f == g || g == One || f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == One ||</div><div class="line"><a name="l16887"></a><span class="lineno">16887</span>  D == f || D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l16888"></a><span class="lineno">16888</span>  <span class="comment">/* Check for two-operand cases. */</span></div><div class="line"><a name="l16889"></a><span class="lineno">16889</span>  <span class="keywordflow">if</span> (D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == g || D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f))</div><div class="line"><a name="l16890"></a><span class="lineno">16890</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,f,g));</div><div class="line"><a name="l16891"></a><span class="lineno">16891</span>  <span class="keywordflow">if</span> (g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || g == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f)) <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,f,D));</div><div class="line"><a name="l16892"></a><span class="lineno">16892</span>  <span class="keywordflow">if</span> (f == One) <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g),D));</div><div class="line"><a name="l16893"></a><span class="lineno">16893</span> </div><div class="line"><a name="l16894"></a><span class="lineno">16894</span>  <span class="comment">/* From now on, f, g, and D are non-constant, distinct, and</span></div><div class="line"><a name="l16895"></a><span class="lineno">16895</span> <span class="comment"> ** non-complementary. */</span></div><div class="line"><a name="l16896"></a><span class="lineno">16896</span> </div><div class="line"><a name="l16897"></a><span class="lineno">16897</span>  <span class="comment">/* Normalize call to increase cache efficiency. We rely on the</span></div><div class="line"><a name="l16898"></a><span class="lineno">16898</span> <span class="comment"> ** fact that f <= g unless D is equivalent to not(g) <= not(f)</span></div><div class="line"><a name="l16899"></a><span class="lineno">16899</span> <span class="comment"> ** unless D and to f <= D unless g. We make sure that D is</span></div><div class="line"><a name="l16900"></a><span class="lineno">16900</span> <span class="comment"> ** regular, and that at most one of f and g is complemented. We also</span></div><div class="line"><a name="l16901"></a><span class="lineno">16901</span> <span class="comment"> ** ensure that when two operands can be swapped, the one with the</span></div><div class="line"><a name="l16902"></a><span class="lineno">16902</span> <span class="comment"> ** lowest address comes first. */</span></div><div class="line"><a name="l16903"></a><span class="lineno">16903</span> </div><div class="line"><a name="l16904"></a><span class="lineno">16904</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(D)) {</div><div class="line"><a name="l16905"></a><span class="lineno">16905</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l16906"></a><span class="lineno">16906</span>  <span class="comment">/* Special case: if f is regular and g is complemented,</span></div><div class="line"><a name="l16907"></a><span class="lineno">16907</span> <span class="comment"> ** f(1,...,1) = 1 > 0 = g(1,...,1). If D(1,...,1) = 0, return 0.</span></div><div class="line"><a name="l16908"></a><span class="lineno">16908</span> <span class="comment"> */</span></div><div class="line"><a name="l16909"></a><span class="lineno">16909</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l16910"></a><span class="lineno">16910</span>  <span class="comment">/* !g <= D unless !f or !D <= g unless !f */</span></div><div class="line"><a name="l16911"></a><span class="lineno">16911</span>  tmp = D;</div><div class="line"><a name="l16912"></a><span class="lineno">16912</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16913"></a><span class="lineno">16913</span>  <span class="keywordflow">if</span> (g < tmp) {</div><div class="line"><a name="l16914"></a><span class="lineno">16914</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l16915"></a><span class="lineno">16915</span>  g = tmp;</div><div class="line"><a name="l16916"></a><span class="lineno">16916</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16917"></a><span class="lineno">16917</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16918"></a><span class="lineno">16918</span>  }</div><div class="line"><a name="l16919"></a><span class="lineno">16919</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16920"></a><span class="lineno">16920</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l16921"></a><span class="lineno">16921</span>  <span class="comment">/* !D <= !f unless g or !D <= g unless !f */</span></div><div class="line"><a name="l16922"></a><span class="lineno">16922</span>  tmp = f;</div><div class="line"><a name="l16923"></a><span class="lineno">16923</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(D);</div><div class="line"><a name="l16924"></a><span class="lineno">16924</span>  <span class="keywordflow">if</span> (tmp < g) {</div><div class="line"><a name="l16925"></a><span class="lineno">16925</span>  D = g;</div><div class="line"><a name="l16926"></a><span class="lineno">16926</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16927"></a><span class="lineno">16927</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16928"></a><span class="lineno">16928</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16929"></a><span class="lineno">16929</span>  }</div><div class="line"><a name="l16930"></a><span class="lineno">16930</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16931"></a><span class="lineno">16931</span>  <span class="comment">/* f <= D unless g or !D <= !f unless g */</span></div><div class="line"><a name="l16932"></a><span class="lineno">16932</span>  tmp = D;</div><div class="line"><a name="l16933"></a><span class="lineno">16933</span>  D = g;</div><div class="line"><a name="l16934"></a><span class="lineno">16934</span>  <span class="keywordflow">if</span> (tmp < f) {</div><div class="line"><a name="l16935"></a><span class="lineno">16935</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16936"></a><span class="lineno">16936</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16937"></a><span class="lineno">16937</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16938"></a><span class="lineno">16938</span>  g = tmp;</div><div class="line"><a name="l16939"></a><span class="lineno">16939</span>  }</div><div class="line"><a name="l16940"></a><span class="lineno">16940</span>  }</div><div class="line"><a name="l16941"></a><span class="lineno">16941</span>  }</div><div class="line"><a name="l16942"></a><span class="lineno">16942</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16943"></a><span class="lineno">16943</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l16944"></a><span class="lineno">16944</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l16945"></a><span class="lineno">16945</span>  <span class="comment">/* !g <= !f unless D or !g <= D unless !f */</span></div><div class="line"><a name="l16946"></a><span class="lineno">16946</span>  tmp = f;</div><div class="line"><a name="l16947"></a><span class="lineno">16947</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g);</div><div class="line"><a name="l16948"></a><span class="lineno">16948</span>  <span class="keywordflow">if</span> (D < tmp) {</div><div class="line"><a name="l16949"></a><span class="lineno">16949</span>  g = D;</div><div class="line"><a name="l16950"></a><span class="lineno">16950</span>  D = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16951"></a><span class="lineno">16951</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16952"></a><span class="lineno">16952</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16953"></a><span class="lineno">16953</span>  }</div><div class="line"><a name="l16954"></a><span class="lineno">16954</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16955"></a><span class="lineno">16955</span>  <span class="comment">/* f <= g unless D or !g <= !f unless D */</span></div><div class="line"><a name="l16956"></a><span class="lineno">16956</span>  <span class="keywordflow">if</span> (g < f) {</div><div class="line"><a name="l16957"></a><span class="lineno">16957</span>  tmp = g;</div><div class="line"><a name="l16958"></a><span class="lineno">16958</span>  g = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f);</div><div class="line"><a name="l16959"></a><span class="lineno">16959</span>  f = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(tmp);</div><div class="line"><a name="l16960"></a><span class="lineno">16960</span>  }</div><div class="line"><a name="l16961"></a><span class="lineno">16961</span>  }</div><div class="line"><a name="l16962"></a><span class="lineno">16962</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16963"></a><span class="lineno">16963</span>  <span class="comment">/* f <= g unless D or f <= D unless g */</span></div><div class="line"><a name="l16964"></a><span class="lineno">16964</span>  <span class="keywordflow">if</span> (D < g) {</div><div class="line"><a name="l16965"></a><span class="lineno">16965</span>  tmp = D;</div><div class="line"><a name="l16966"></a><span class="lineno">16966</span>  D = g;</div><div class="line"><a name="l16967"></a><span class="lineno">16967</span>  g = tmp;</div><div class="line"><a name="l16968"></a><span class="lineno">16968</span>  }</div><div class="line"><a name="l16969"></a><span class="lineno">16969</span>  }</div><div class="line"><a name="l16970"></a><span class="lineno">16970</span>  }</div><div class="line"><a name="l16971"></a><span class="lineno">16971</span> </div><div class="line"><a name="l16972"></a><span class="lineno">16972</span>  <span class="comment">/* From now on, D is regular. */</span></div><div class="line"><a name="l16973"></a><span class="lineno">16973</span> </div><div class="line"><a name="l16974"></a><span class="lineno">16974</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16975"></a><span class="lineno">16975</span>  tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd,<a class="code" href="cuddInt_8h.html#ae51310f4dbc382140288e235e21840f3">DD_BDD_LEQ_UNLESS_TAG</a>,f,g,D);</div><div class="line"><a name="l16976"></a><span class="lineno">16976</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(tmp == One);</div><div class="line"><a name="l16977"></a><span class="lineno">16977</span> </div><div class="line"><a name="l16978"></a><span class="lineno">16978</span>  <span class="comment">/* Find splitting variable. */</span></div><div class="line"><a name="l16979"></a><span class="lineno">16979</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l16980"></a><span class="lineno">16980</span>  flevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16981"></a><span class="lineno">16981</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l16982"></a><span class="lineno">16982</span>  glevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16983"></a><span class="lineno">16983</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(flevel,glevel);</div><div class="line"><a name="l16984"></a><span class="lineno">16984</span>  dlevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[D-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16985"></a><span class="lineno">16985</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(top,dlevel);</div><div class="line"><a name="l16986"></a><span class="lineno">16986</span> </div><div class="line"><a name="l16987"></a><span class="lineno">16987</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16988"></a><span class="lineno">16988</span>  <span class="keywordflow">if</span> (top == flevel) {</div><div class="line"><a name="l16989"></a><span class="lineno">16989</span>  Ft = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l16990"></a><span class="lineno">16990</span>  Fe = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16991"></a><span class="lineno">16991</span>  <span class="keywordflow">if</span> (F != f) {</div><div class="line"><a name="l16992"></a><span class="lineno">16992</span>  Ft = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Ft);</div><div class="line"><a name="l16993"></a><span class="lineno">16993</span>  Fe = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Fe);</div><div class="line"><a name="l16994"></a><span class="lineno">16994</span>  }</div><div class="line"><a name="l16995"></a><span class="lineno">16995</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16996"></a><span class="lineno">16996</span>  Ft = Fe = f;</div><div class="line"><a name="l16997"></a><span class="lineno">16997</span>  }</div><div class="line"><a name="l16998"></a><span class="lineno">16998</span>  <span class="keywordflow">if</span> (top == glevel) {</div><div class="line"><a name="l16999"></a><span class="lineno">16999</span>  Gt = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l17000"></a><span class="lineno">17000</span>  Ge = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l17001"></a><span class="lineno">17001</span>  <span class="keywordflow">if</span> (G != g) {</div><div class="line"><a name="l17002"></a><span class="lineno">17002</span>  Gt = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gt);</div><div class="line"><a name="l17003"></a><span class="lineno">17003</span>  Ge = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Ge);</div><div class="line"><a name="l17004"></a><span class="lineno">17004</span>  }</div><div class="line"><a name="l17005"></a><span class="lineno">17005</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17006"></a><span class="lineno">17006</span>  Gt = Ge = g;</div><div class="line"><a name="l17007"></a><span class="lineno">17007</span>  }</div><div class="line"><a name="l17008"></a><span class="lineno">17008</span>  <span class="keywordflow">if</span> (top == dlevel) {</div><div class="line"><a name="l17009"></a><span class="lineno">17009</span>  Dt = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(D);</div><div class="line"><a name="l17010"></a><span class="lineno">17010</span>  De = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(D);</div><div class="line"><a name="l17011"></a><span class="lineno">17011</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17012"></a><span class="lineno">17012</span>  Dt = De = D;</div><div class="line"><a name="l17013"></a><span class="lineno">17013</span>  }</div><div class="line"><a name="l17014"></a><span class="lineno">17014</span> </div><div class="line"><a name="l17015"></a><span class="lineno">17015</span>  <span class="comment">/* Solve recursively. */</span></div><div class="line"><a name="l17016"></a><span class="lineno">17016</span>  res = <a class="code" href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a>(dd,Ft,Gt,Dt);</div><div class="line"><a name="l17017"></a><span class="lineno">17017</span>  <span class="keywordflow">if</span> (res != 0) {</div><div class="line"><a name="l17018"></a><span class="lineno">17018</span>  res = <a class="code" href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a>(dd,Fe,Ge,De);</div><div class="line"><a name="l17019"></a><span class="lineno">17019</span>  }</div><div class="line"><a name="l17020"></a><span class="lineno">17020</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd,<a class="code" href="cuddInt_8h.html#ae51310f4dbc382140288e235e21840f3">DD_BDD_LEQ_UNLESS_TAG</a>,f,g,D,<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(One,!res));</div><div class="line"><a name="l17021"></a><span class="lineno">17021</span> </div><div class="line"><a name="l17022"></a><span class="lineno">17022</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l17023"></a><span class="lineno">17023</span> </div><div class="line"><a name="l17024"></a><span class="lineno">17024</span>  } <span class="comment">/* end of Cudd_bddLeqUnless */</span></div><div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
4925
4925
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
4926
4926
|
<div class="ttc" id="cuddInt_8c_html_ab2e7f6c2eabfb9af8ed7e52dcc00a678"><div class="ttname"><a href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a></div><div class="ttdeci">DdNode * cuddCacheLookup(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04413">cuddInt.c:4413</a></div></div>
|
|
4927
4927
|
<div class="ttc" id="cudd_8h_html_afbbecf4f6f78f92518f4d0a477d870b6"><div class="ttname"><a href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a></div><div class="ttdeci">#define Cudd_Regular(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00382">cudd.h:382</a></div></div>
|
|
@@ -4931,10 +4931,10 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
4931
4931
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
4932
4932
|
<div class="ttc" id="cuddInt_8h_html_ae51310f4dbc382140288e235e21840f3"><div class="ttname"><a href="cuddInt_8h.html#ae51310f4dbc382140288e235e21840f3">DD_BDD_LEQ_UNLESS_TAG</a></div><div class="ttdeci">#define DD_BDD_LEQ_UNLESS_TAG</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00189">cuddInt.h:189</a></div></div>
|
|
4933
4933
|
<div class="ttc" id="cuddInt_8c_html_a89a46089e8572876a1521cdee6cb31a2"><div class="ttname"><a href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a></div><div class="ttdeci">int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03283">cuddInt.c:3283</a></div></div>
|
|
4934
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
4935
4934
|
<div class="ttc" id="cuddInt_8c_html_ac766e39390bf4d3c975d4a6bd34653dc"><div class="ttname"><a href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a></div><div class="ttdeci">void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04283">cuddInt.c:4283</a></div></div>
|
|
4936
4935
|
<div class="ttc" id="cuddInt_8c_html_a5dcbf450b32f6937bc6dba252474638d"><div class="ttname"><a href="cuddInt_8c.html#a5dcbf450b32f6937bc6dba252474638d">Cudd_bddLeqUnless</a></div><div class="ttdeci">int Cudd_bddLeqUnless(DdManager *dd, DdNode *f, DdNode *g, DdNode *D)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16870">cuddInt.c:16870</a></div></div>
|
|
4937
4936
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
4937
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
4938
4938
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
4939
4939
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
4940
4940
|
<div class="ttc" id="cudd_8h_html_ae870da95e89a703e939161fe08b899f9"><div class="ttname"><a href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a></div><div class="ttdeci">#define Cudd_NotCond(node, c)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00368">cudd.h:368</a></div></div>
|
|
@@ -5222,7 +5222,7 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
5222
5222
|
<p>SeeAlso [] </p>
|
|
5223
5223
|
|
|
5224
5224
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l02369">2369</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
5225
|
-
<div class="fragment"><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> {</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#
|
|
5225
|
+
<div class="fragment"><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> {</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *res, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *ft, *fe;</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>  <span class="keywordtype">unsigned</span> topf, level;</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>  <a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a> cacheOp;</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  <span class="keywordtype">int</span> retval;</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> </div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd));</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35e63bfe07b09cd6f2508742cc37af38">Cudd_IsConstant</a>(f)) <span class="keywordflow">return</span>(f == zero);</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span> </div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>  <span class="comment">/* From now on f is not constant. */</span></div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>  topf = (unsigned) dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>  level = (<span class="keywordtype">unsigned</span>) dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[var-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span> </div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  <span class="comment">/* Check terminal case. If topf > index of var, f does not depend on var.</span></div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> <span class="comment"> ** Therefore, var is not dependent in f. */</span></div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>  <span class="keywordflow">if</span> (topf > level) {</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>  <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>  }</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> </div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  cacheOp = (<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>) <a class="code" href="cuddInt_8c.html#a4175e1b1c5fe59957da7be2966036a77">Cudd_bddVarIsDependent</a>;</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,cacheOp,f,var);</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  <span class="keywordflow">if</span> (res != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  <span class="keywordflow">return</span>(res != zero);</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  }</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span> </div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  ft = <a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(<a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F), f != F);</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  fe = <a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(<a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F), f != F);</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span> </div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  <span class="keywordflow">if</span> (topf == level) {</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  retval = <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,ft,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fe));</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  retval = <a class="code" href="cuddInt_8c.html#a4175e1b1c5fe59957da7be2966036a77">Cudd_bddVarIsDependent</a>(dd,ft,var) &&</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  <a class="code" href="cuddInt_8c.html#a4175e1b1c5fe59957da7be2966036a77">Cudd_bddVarIsDependent</a>(dd,fe,var);</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  }</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> </div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,cacheOp,f,var,<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(zero,retval));</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span> </div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  <span class="keywordflow">return</span>(retval);</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span> </div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span> } <span class="comment">/* Cudd_bddVarIsDependent */</span></div><div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
5226
5226
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
5227
5227
|
<div class="ttc" id="cudd_8h_html_a35e63bfe07b09cd6f2508742cc37af38"><div class="ttname"><a href="cudd_8h.html#a35e63bfe07b09cd6f2508742cc37af38">Cudd_IsConstant</a></div><div class="ttdeci">#define Cudd_IsConstant(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00337">cudd.h:337</a></div></div>
|
|
5228
5228
|
<div class="ttc" id="cudd_8h_html_afbbecf4f6f78f92518f4d0a477d870b6"><div class="ttname"><a href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a></div><div class="ttdeci">#define Cudd_Regular(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00382">cudd.h:382</a></div></div>
|
|
@@ -5231,8 +5231,8 @@ number of roots in the part of the BDD subjected to reordering; </li>
|
|
|
5231
5231
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
5232
5232
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
5233
5233
|
<div class="ttc" id="cuddInt_8c_html_a89a46089e8572876a1521cdee6cb31a2"><div class="ttname"><a href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a></div><div class="ttdeci">int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03283">cuddInt.c:3283</a></div></div>
|
|
5234
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
5235
5234
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
5235
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
5236
5236
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
5237
5237
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
5238
5238
|
<div class="ttc" id="cudd_8h_html_ae870da95e89a703e939161fe08b899f9"><div class="ttname"><a href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a></div><div class="ttdeci">#define Cudd_NotCond(node, c)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00368">cudd.h:368</a></div></div>
|
|
@@ -5526,7 +5526,7 @@ Wrong number of total dead found </li>
|
|
|
5526
5526
|
<div class="ttc" id="cudd_8h_html_a0eacff9d14824f9601da7152ecfdaeb1"><div class="ttname"><a href="cudd_8h.html#a0eacff9d14824f9601da7152ecfdaeb1">CUDD_VALUE_TYPE</a></div><div class="ttdeci">#define CUDD_VALUE_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00087">cudd.h:87</a></div></div>
|
|
5527
5527
|
<div class="ttc" id="structDdManager_html_a239bd99ee654742adc79b8299c2bc92e"><div class="ttname"><a href="structDdManager.html#a239bd99ee654742adc79b8299c2bc92e">DdManager::one</a></div><div class="ttdeci">DdNode * one</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00343">cuddInt.h:343</a></div></div>
|
|
5528
5528
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
5529
|
-
<div class="ttc" id="CFLGrammar_8txt_html_a114c2e5cd44b3ea4720e9191ed819f3b"><div class="ttname"><a href="CFLGrammar_8txt.html#a114c2e5cd44b3ea4720e9191ed819f3b">epsilon</a></div><div class="ttdeci">Fbar epsilon</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#
|
|
5529
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a114c2e5cd44b3ea4720e9191ed819f3b"><div class="ttname"><a href="CFLGrammar_8txt.html#a114c2e5cd44b3ea4720e9191ed819f3b">epsilon</a></div><div class="ttdeci">Fbar epsilon</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00011">CFLGrammar.txt:11</a></div></div>
|
|
5530
5530
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
5531
5531
|
<div class="ttc" id="structDdManager_html_af901aff58575a7fea75f7de35b4684b6"><div class="ttname"><a href="structDdManager.html#af901aff58575a7fea75f7de35b4684b6">DdManager::background</a></div><div class="ttdeci">DdNode * background</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00347">cuddInt.h:347</a></div></div>
|
|
5532
5532
|
</div><!-- fragment -->
|
|
@@ -5665,7 +5665,7 @@ ref count error at node </li>
|
|
|
5665
5665
|
<p>SeeAlso [Cudd_Increasing] </p>
|
|
5666
5666
|
|
|
5667
5667
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l16691">16691</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
5668
|
-
<div class="fragment"><div class="line"><a name="l16695"></a><span class="lineno">16695</span>  {</div><div class="line"><a name="l16696"></a><span class="lineno">16696</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, level;</div><div class="line"><a name="l16697"></a><span class="lineno">16697</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *fv, *fvn, *res;</div><div class="line"><a name="l16698"></a><span class="lineno">16698</span>  <a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a> cacheOp;</div><div class="line"><a name="l16699"></a><span class="lineno">16699</span> </div><div class="line"><a name="l16700"></a><span class="lineno">16700</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16701"></a><span class="lineno">16701</span> <span class="preprocessor">#ifdef DD_DEBUG</span></div><div class="line"><a name="l16702"></a><span class="lineno">16702</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 <= i && i < dd->size);</div><div class="line"><a name="l16703"></a><span class="lineno">16703</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l16704"></a><span class="lineno">16704</span> </div><div class="line"><a name="l16705"></a><span class="lineno">16705</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l16706"></a><span class="lineno">16706</span>  topf = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16707"></a><span class="lineno">16707</span> </div><div class="line"><a name="l16708"></a><span class="lineno">16708</span>  <span class="comment">/* Check terminal case. If topf > i, f does not depend on var.</span></div><div class="line"><a name="l16709"></a><span class="lineno">16709</span> <span class="comment"> ** Therefore, f is unate in i.</span></div><div class="line"><a name="l16710"></a><span class="lineno">16710</span> <span class="comment"> */</span></div><div class="line"><a name="l16711"></a><span class="lineno">16711</span>  level = (unsigned) dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[i];</div><div class="line"><a name="l16712"></a><span class="lineno">16712</span>  <a class="code" href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">if</a> (topf > level) {</div><div class="line"><a name="l16713"></a><span class="lineno">16713</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd));</div><div class="line"><a name="l16714"></a><span class="lineno">16714</span>  }</div><div class="line"><a name="l16715"></a><span class="lineno">16715</span> </div><div class="line"><a name="l16716"></a><span class="lineno">16716</span>  <span class="comment">/* From now on, f is not constant. */</span></div><div class="line"><a name="l16717"></a><span class="lineno">16717</span> </div><div class="line"><a name="l16718"></a><span class="lineno">16718</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16719"></a><span class="lineno">16719</span>  cacheOp = (<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>) <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>;</div><div class="line"><a name="l16720"></a><span class="lineno">16720</span>  res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,cacheOp,f,dd-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[i]);</div><div class="line"><a name="l16721"></a><span class="lineno">16721</span>  <span class="keywordflow">if</span> (res != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l16722"></a><span class="lineno">16722</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16723"></a><span class="lineno">16723</span>  }</div><div class="line"><a name="l16724"></a><span class="lineno">16724</span> </div><div class="line"><a name="l16725"></a><span class="lineno">16725</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16726"></a><span class="lineno">16726</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16727"></a><span class="lineno">16727</span>  <span class="keywordflow">if</span> (F != f) {</div><div class="line"><a name="l16728"></a><span class="lineno">16728</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l16729"></a><span class="lineno">16729</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l16730"></a><span class="lineno">16730</span>  }</div><div class="line"><a name="l16731"></a><span class="lineno">16731</span> </div><div class="line"><a name="l16732"></a><span class="lineno">16732</span>  <span class="keywordflow">if</span> (topf == (<span class="keywordtype">unsigned</span>) level) {</div><div class="line"><a name="l16733"></a><span class="lineno">16733</span>  <span class="comment">/* Special case: if fv is regular, fv(1,...,1) = 1;</span></div><div class="line"><a name="l16734"></a><span class="lineno">16734</span> <span class="comment"> ** If in addition fvn is complemented, fvn(1,...,1) = 0.</span></div><div class="line"><a name="l16735"></a><span class="lineno">16735</span> <span class="comment"> ** But then f(1,1,...,1) > f(0,1,...,1). Hence f is not</span></div><div class="line"><a name="l16736"></a><span class="lineno">16736</span> <span class="comment"> ** monotonic decreasing in i.</span></div><div class="line"><a name="l16737"></a><span class="lineno">16737</span> <span class="comment"> */</span></div><div class="line"><a name="l16738"></a><span class="lineno">16738</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(fv) && <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(fvn)) {</div><div class="line"><a name="l16739"></a><span class="lineno">16739</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd)));</div><div class="line"><a name="l16740"></a><span class="lineno">16740</span>  }</div><div class="line"><a name="l16741"></a><span class="lineno">16741</span>  res = <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fv,fvn) ? <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd) : <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd));</div><div class="line"><a name="l16742"></a><span class="lineno">16742</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16743"></a><span class="lineno">16743</span>  res = <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>(dd,fv,i);</div><div class="line"><a name="l16744"></a><span class="lineno">16744</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd)) {</div><div class="line"><a name="l16745"></a><span class="lineno">16745</span>  res = <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>(dd,fvn,i);</div><div class="line"><a name="l16746"></a><span class="lineno">16746</span>  }</div><div class="line"><a name="l16747"></a><span class="lineno">16747</span>  }</div><div class="line"><a name="l16748"></a><span class="lineno">16748</span> </div><div class="line"><a name="l16749"></a><span class="lineno">16749</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,cacheOp,f,dd-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[i],res);</div><div class="line"><a name="l16750"></a><span class="lineno">16750</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16751"></a><span class="lineno">16751</span> </div><div class="line"><a name="l16752"></a><span class="lineno">16752</span>  } <span class="comment">/* end of Cudd_Decreasing */</span></div><div class="ttc" id="cJSON_8cpp_html_a90e6101bee79e6d18c535254695e91e3"><div class="ttname"><a href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">if</a></div><div class="ttdeci">if(!(object->type &cJSON_String)||(object->type &cJSON_IsReference))</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00405">cJSON.cpp:405</a></div></div>
|
|
5668
|
+
<div class="fragment"><div class="line"><a name="l16695"></a><span class="lineno">16695</span>  {</div><div class="line"><a name="l16696"></a><span class="lineno">16696</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, level;</div><div class="line"><a name="l16697"></a><span class="lineno">16697</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *fv, *fvn, *res;</div><div class="line"><a name="l16698"></a><span class="lineno">16698</span>  <a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a> cacheOp;</div><div class="line"><a name="l16699"></a><span class="lineno">16699</span> </div><div class="line"><a name="l16700"></a><span class="lineno">16700</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16701"></a><span class="lineno">16701</span> <span class="preprocessor">#ifdef DD_DEBUG</span></div><div class="line"><a name="l16702"></a><span class="lineno">16702</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 <= i && i < dd->size);</div><div class="line"><a name="l16703"></a><span class="lineno">16703</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l16704"></a><span class="lineno">16704</span> </div><div class="line"><a name="l16705"></a><span class="lineno">16705</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l16706"></a><span class="lineno">16706</span>  topf = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16707"></a><span class="lineno">16707</span> </div><div class="line"><a name="l16708"></a><span class="lineno">16708</span>  <span class="comment">/* Check terminal case. If topf > i, f does not depend on var.</span></div><div class="line"><a name="l16709"></a><span class="lineno">16709</span> <span class="comment"> ** Therefore, f is unate in i.</span></div><div class="line"><a name="l16710"></a><span class="lineno">16710</span> <span class="comment"> */</span></div><div class="line"><a name="l16711"></a><span class="lineno">16711</span>  level = (unsigned) dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[i];</div><div class="line"><a name="l16712"></a><span class="lineno">16712</span>  <a class="code" href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">if</a> (topf > level) {</div><div class="line"><a name="l16713"></a><span class="lineno">16713</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd));</div><div class="line"><a name="l16714"></a><span class="lineno">16714</span>  }</div><div class="line"><a name="l16715"></a><span class="lineno">16715</span> </div><div class="line"><a name="l16716"></a><span class="lineno">16716</span>  <span class="comment">/* From now on, f is not constant. */</span></div><div class="line"><a name="l16717"></a><span class="lineno">16717</span> </div><div class="line"><a name="l16718"></a><span class="lineno">16718</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16719"></a><span class="lineno">16719</span>  cacheOp = (<a class="code" href="cudd_8h.html#af55488f14ee0664be0dee3f2004f5fd6">DD_CTFP</a>) <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>;</div><div class="line"><a name="l16720"></a><span class="lineno">16720</span>  res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,cacheOp,f,dd-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[i]);</div><div class="line"><a name="l16721"></a><span class="lineno">16721</span>  <span class="keywordflow">if</span> (res != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l16722"></a><span class="lineno">16722</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16723"></a><span class="lineno">16723</span>  }</div><div class="line"><a name="l16724"></a><span class="lineno">16724</span> </div><div class="line"><a name="l16725"></a><span class="lineno">16725</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16726"></a><span class="lineno">16726</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16727"></a><span class="lineno">16727</span>  <span class="keywordflow">if</span> (F != f) {</div><div class="line"><a name="l16728"></a><span class="lineno">16728</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l16729"></a><span class="lineno">16729</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l16730"></a><span class="lineno">16730</span>  }</div><div class="line"><a name="l16731"></a><span class="lineno">16731</span> </div><div class="line"><a name="l16732"></a><span class="lineno">16732</span>  <span class="keywordflow">if</span> (topf == (<span class="keywordtype">unsigned</span>) level) {</div><div class="line"><a name="l16733"></a><span class="lineno">16733</span>  <span class="comment">/* Special case: if fv is regular, fv(1,...,1) = 1;</span></div><div class="line"><a name="l16734"></a><span class="lineno">16734</span> <span class="comment"> ** If in addition fvn is complemented, fvn(1,...,1) = 0.</span></div><div class="line"><a name="l16735"></a><span class="lineno">16735</span> <span class="comment"> ** But then f(1,1,...,1) > f(0,1,...,1). Hence f is not</span></div><div class="line"><a name="l16736"></a><span class="lineno">16736</span> <span class="comment"> ** monotonic decreasing in i.</span></div><div class="line"><a name="l16737"></a><span class="lineno">16737</span> <span class="comment"> */</span></div><div class="line"><a name="l16738"></a><span class="lineno">16738</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(fv) && <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(fvn)) {</div><div class="line"><a name="l16739"></a><span class="lineno">16739</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd)));</div><div class="line"><a name="l16740"></a><span class="lineno">16740</span>  }</div><div class="line"><a name="l16741"></a><span class="lineno">16741</span>  res = <a class="code" href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a>(dd,fv,fvn) ? <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd) : <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd));</div><div class="line"><a name="l16742"></a><span class="lineno">16742</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16743"></a><span class="lineno">16743</span>  res = <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>(dd,fv,i);</div><div class="line"><a name="l16744"></a><span class="lineno">16744</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd)) {</div><div class="line"><a name="l16745"></a><span class="lineno">16745</span>  res = <a class="code" href="cuddInt_8c.html#a66a70b011fca8b95fbc3953e8b1be1fe">Cudd_Decreasing</a>(dd,fvn,i);</div><div class="line"><a name="l16746"></a><span class="lineno">16746</span>  }</div><div class="line"><a name="l16747"></a><span class="lineno">16747</span>  }</div><div class="line"><a name="l16748"></a><span class="lineno">16748</span> </div><div class="line"><a name="l16749"></a><span class="lineno">16749</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,cacheOp,f,dd-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[i],res);</div><div class="line"><a name="l16750"></a><span class="lineno">16750</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16751"></a><span class="lineno">16751</span> </div><div class="line"><a name="l16752"></a><span class="lineno">16752</span>  } <span class="comment">/* end of Cudd_Decreasing */</span></div><div class="ttc" id="cJSON_8cpp_html_a90e6101bee79e6d18c535254695e91e3"><div class="ttname"><a href="cJSON_8cpp.html#a90e6101bee79e6d18c535254695e91e3">if</a></div><div class="ttdeci">if(!(object->type &cJSON_String)||(object->type &cJSON_IsReference))</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00405">cJSON.cpp:405</a></div></div>
|
|
5669
5669
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
5670
5670
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
5671
5671
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -5678,9 +5678,9 @@ ref count error at node </li>
|
|
|
5678
5678
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
5679
5679
|
<div class="ttc" id="cuddInt_8h_html_aa7299d1217a57571ef88e9ac90530978"><div class="ttname"><a href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a></div><div class="ttdeci">#define cuddI(dd, index)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00676">cuddInt.h:676</a></div></div>
|
|
5680
5680
|
<div class="ttc" id="cuddInt_8c_html_a89a46089e8572876a1521cdee6cb31a2"><div class="ttname"><a href="cuddInt_8c.html#a89a46089e8572876a1521cdee6cb31a2">Cudd_bddLeq</a></div><div class="ttdeci">int Cudd_bddLeq(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03283">cuddInt.c:3283</a></div></div>
|
|
5681
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
5682
5681
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
5683
5682
|
<div class="ttc" id="structDdManager_html_a70f75f877a9e8f1b7a1c219cd4675ce1"><div class="ttname"><a href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">DdManager::vars</a></div><div class="ttdeci">DdNode ** vars</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00387">cuddInt.h:387</a></div></div>
|
|
5683
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
5684
5684
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
5685
5685
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
5686
5686
|
<div class="ttc" id="cuddInt_8h_html_a0fc86b7b0c157b7fa3738661d65a22d7"><div class="ttname"><a href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a></div><div class="ttdeci">#define DD_ONE(dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00881">cuddInt.h:881</a></div></div>
|
|
@@ -5830,7 +5830,7 @@ ref count error at node </li>
|
|
|
5830
5830
|
<p>SeeAlso [Cudd_bddLeqUnless] </p>
|
|
5831
5831
|
|
|
5832
5832
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l16770">16770</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
5833
|
-
<div class="fragment"><div class="line"><a name="l16775"></a><span class="lineno">16775</span>  {</div><div class="line"><a name="l16776"></a><span class="lineno">16776</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp, *One, *Gr, *Dr;</div><div class="line"><a name="l16777"></a><span class="lineno">16777</span>  <a class="code" href="structDdNode.html">DdNode</a> *Fv, *Fvn, *Gv, *Gvn, *Dv, *Dvn;</div><div class="line"><a name="l16778"></a><span class="lineno">16778</span>  <span class="keywordtype">int</span> res;</div><div class="line"><a name="l16779"></a><span class="lineno">16779</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flevel, glevel, dlevel, top;</div><div class="line"><a name="l16780"></a><span class="lineno">16780</span> </div><div class="line"><a name="l16781"></a><span class="lineno">16781</span>  One = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l16782"></a><span class="lineno">16782</span> </div><div class="line"><a name="l16783"></a><span class="lineno">16783</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16784"></a><span class="lineno">16784</span>  <span class="comment">/* Check terminal cases. */</span></div><div class="line"><a name="l16785"></a><span class="lineno">16785</span>  <span class="keywordflow">if</span> (D == One || F == G) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l16786"></a><span class="lineno">16786</span>  <span class="keywordflow">if</span> (D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd) || F == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(G)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l16787"></a><span class="lineno">16787</span> </div><div class="line"><a name="l16788"></a><span class="lineno">16788</span>  <span class="comment">/* From now on, D is non-constant. */</span></div><div class="line"><a name="l16789"></a><span class="lineno">16789</span> </div><div class="line"><a name="l16790"></a><span class="lineno">16790</span>  <span class="comment">/* Normalize call to increase cache efficiency. */</span></div><div class="line"><a name="l16791"></a><span class="lineno">16791</span>  <span class="keywordflow">if</span> (F > G) {</div><div class="line"><a name="l16792"></a><span class="lineno">16792</span>  tmp = <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l16793"></a><span class="lineno">16793</span>  F = G;</div><div class="line"><a name="l16794"></a><span class="lineno">16794</span>  G = tmp;</div><div class="line"><a name="l16795"></a><span class="lineno">16795</span>  }</div><div class="line"><a name="l16796"></a><span class="lineno">16796</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(F)) {</div><div class="line"><a name="l16797"></a><span class="lineno">16797</span>  F = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(F);</div><div class="line"><a name="l16798"></a><span class="lineno">16798</span>  G = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(G);</div><div class="line"><a name="l16799"></a><span class="lineno">16799</span>  }</div><div class="line"><a name="l16800"></a><span class="lineno">16800</span> </div><div class="line"><a name="l16801"></a><span class="lineno">16801</span>  <span class="comment">/* From now on, F is regular. */</span></div><div class="line"><a name="l16802"></a><span class="lineno">16802</span> </div><div class="line"><a name="l16803"></a><span class="lineno">16803</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16804"></a><span class="lineno">16804</span>  tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd,<a class="code" href="cuddInt_8h.html#a544fba69760437cee493d4111f2e956f">DD_EQUIV_DC_TAG</a>,F,G,D);</div><div class="line"><a name="l16805"></a><span class="lineno">16805</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(tmp == One);</div><div class="line"><a name="l16806"></a><span class="lineno">16806</span> </div><div class="line"><a name="l16807"></a><span class="lineno">16807</span>  <span class="comment">/* Find splitting variable. */</span></div><div class="line"><a name="l16808"></a><span class="lineno">16808</span>  flevel = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16809"></a><span class="lineno">16809</span>  Gr = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(G);</div><div class="line"><a name="l16810"></a><span class="lineno">16810</span>  glevel = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,Gr-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16811"></a><span class="lineno">16811</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(flevel,glevel);</div><div class="line"><a name="l16812"></a><span class="lineno">16812</span>  Dr = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(D);</div><div class="line"><a name="l16813"></a><span class="lineno">16813</span>  dlevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[Dr-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16814"></a><span class="lineno">16814</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(top,dlevel);</div><div class="line"><a name="l16815"></a><span class="lineno">16815</span> </div><div class="line"><a name="l16816"></a><span class="lineno">16816</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16817"></a><span class="lineno">16817</span>  <span class="keywordflow">if</span> (top == flevel) {</div><div class="line"><a name="l16818"></a><span class="lineno">16818</span>  Fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l16819"></a><span class="lineno">16819</span>  Fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16820"></a><span class="lineno">16820</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16821"></a><span class="lineno">16821</span>  Fv = Fvn = <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l16822"></a><span class="lineno">16822</span>  }</div><div class="line"><a name="l16823"></a><span class="lineno">16823</span>  <span class="keywordflow">if</span> (top == glevel) {</div><div class="line"><a name="l16824"></a><span class="lineno">16824</span>  Gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(Gr);</div><div class="line"><a name="l16825"></a><span class="lineno">16825</span>  Gvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(Gr);</div><div class="line"><a name="l16826"></a><span class="lineno">16826</span>  <span class="keywordflow">if</span> (G != Gr) {</div><div class="line"><a name="l16827"></a><span class="lineno">16827</span>  Gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gv);</div><div class="line"><a name="l16828"></a><span class="lineno">16828</span>  Gvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gvn);</div><div class="line"><a name="l16829"></a><span class="lineno">16829</span>  }</div><div class="line"><a name="l16830"></a><span class="lineno">16830</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16831"></a><span class="lineno">16831</span>  Gv = Gvn = G;</div><div class="line"><a name="l16832"></a><span class="lineno">16832</span>  }</div><div class="line"><a name="l16833"></a><span class="lineno">16833</span>  <span class="keywordflow">if</span> (top == dlevel) {</div><div class="line"><a name="l16834"></a><span class="lineno">16834</span>  Dv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(Dr);</div><div class="line"><a name="l16835"></a><span class="lineno">16835</span>  Dvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(Dr);</div><div class="line"><a name="l16836"></a><span class="lineno">16836</span>  <span class="keywordflow">if</span> (D != Dr) {</div><div class="line"><a name="l16837"></a><span class="lineno">16837</span>  Dv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Dv);</div><div class="line"><a name="l16838"></a><span class="lineno">16838</span>  Dvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Dvn);</div><div class="line"><a name="l16839"></a><span class="lineno">16839</span>  }</div><div class="line"><a name="l16840"></a><span class="lineno">16840</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16841"></a><span class="lineno">16841</span>  Dv = Dvn = D;</div><div class="line"><a name="l16842"></a><span class="lineno">16842</span>  }</div><div class="line"><a name="l16843"></a><span class="lineno">16843</span> </div><div class="line"><a name="l16844"></a><span class="lineno">16844</span>  <span class="comment">/* Solve recursively. */</span></div><div class="line"><a name="l16845"></a><span class="lineno">16845</span>  res = <a class="code" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a>(dd,Fv,Gv,Dv);</div><div class="line"><a name="l16846"></a><span class="lineno">16846</span>  <span class="keywordflow">if</span> (res != 0) {</div><div class="line"><a name="l16847"></a><span class="lineno">16847</span>  res = <a class="code" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a>(dd,Fvn,Gvn,Dvn);</div><div class="line"><a name="l16848"></a><span class="lineno">16848</span>  }</div><div class="line"><a name="l16849"></a><span class="lineno">16849</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd,<a class="code" href="cuddInt_8h.html#a544fba69760437cee493d4111f2e956f">DD_EQUIV_DC_TAG</a>,F,G,D,(res) ? One : <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One));</div><div class="line"><a name="l16850"></a><span class="lineno">16850</span> </div><div class="line"><a name="l16851"></a><span class="lineno">16851</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16852"></a><span class="lineno">16852</span> </div><div class="line"><a name="l16853"></a><span class="lineno">16853</span>  } <span class="comment">/* end of Cudd_EquivDC */</span></div><div class="ttc" id="cuddInt_8c_html_a3e078600dd9087c623e1bdfea00d599d"><div class="ttname"><a href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a></div><div class="ttdeci">int Cudd_EquivDC(DdManager *dd, DdNode *F, DdNode *G, DdNode *D)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16770">cuddInt.c:16770</a></div></div>
|
|
5833
|
+
<div class="fragment"><div class="line"><a name="l16775"></a><span class="lineno">16775</span>  {</div><div class="line"><a name="l16776"></a><span class="lineno">16776</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp, *One, *Gr, *Dr;</div><div class="line"><a name="l16777"></a><span class="lineno">16777</span>  <a class="code" href="structDdNode.html">DdNode</a> *Fv, *Fvn, *Gv, *Gvn, *Dv, *Dvn;</div><div class="line"><a name="l16778"></a><span class="lineno">16778</span>  <span class="keywordtype">int</span> res;</div><div class="line"><a name="l16779"></a><span class="lineno">16779</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flevel, glevel, dlevel, top;</div><div class="line"><a name="l16780"></a><span class="lineno">16780</span> </div><div class="line"><a name="l16781"></a><span class="lineno">16781</span>  One = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l16782"></a><span class="lineno">16782</span> </div><div class="line"><a name="l16783"></a><span class="lineno">16783</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l16784"></a><span class="lineno">16784</span>  <span class="comment">/* Check terminal cases. */</span></div><div class="line"><a name="l16785"></a><span class="lineno">16785</span>  <span class="keywordflow">if</span> (D == One || F == G) <span class="keywordflow">return</span>(1);</div><div class="line"><a name="l16786"></a><span class="lineno">16786</span>  <span class="keywordflow">if</span> (D == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One) || D == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd) || F == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(G)) <span class="keywordflow">return</span>(0);</div><div class="line"><a name="l16787"></a><span class="lineno">16787</span> </div><div class="line"><a name="l16788"></a><span class="lineno">16788</span>  <span class="comment">/* From now on, D is non-constant. */</span></div><div class="line"><a name="l16789"></a><span class="lineno">16789</span> </div><div class="line"><a name="l16790"></a><span class="lineno">16790</span>  <span class="comment">/* Normalize call to increase cache efficiency. */</span></div><div class="line"><a name="l16791"></a><span class="lineno">16791</span>  <span class="keywordflow">if</span> (F > G) {</div><div class="line"><a name="l16792"></a><span class="lineno">16792</span>  tmp = <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l16793"></a><span class="lineno">16793</span>  F = G;</div><div class="line"><a name="l16794"></a><span class="lineno">16794</span>  G = tmp;</div><div class="line"><a name="l16795"></a><span class="lineno">16795</span>  }</div><div class="line"><a name="l16796"></a><span class="lineno">16796</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(F)) {</div><div class="line"><a name="l16797"></a><span class="lineno">16797</span>  F = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(F);</div><div class="line"><a name="l16798"></a><span class="lineno">16798</span>  G = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(G);</div><div class="line"><a name="l16799"></a><span class="lineno">16799</span>  }</div><div class="line"><a name="l16800"></a><span class="lineno">16800</span> </div><div class="line"><a name="l16801"></a><span class="lineno">16801</span>  <span class="comment">/* From now on, F is regular. */</span></div><div class="line"><a name="l16802"></a><span class="lineno">16802</span> </div><div class="line"><a name="l16803"></a><span class="lineno">16803</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l16804"></a><span class="lineno">16804</span>  tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd,<a class="code" href="cuddInt_8h.html#a544fba69760437cee493d4111f2e956f">DD_EQUIV_DC_TAG</a>,F,G,D);</div><div class="line"><a name="l16805"></a><span class="lineno">16805</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(tmp == One);</div><div class="line"><a name="l16806"></a><span class="lineno">16806</span> </div><div class="line"><a name="l16807"></a><span class="lineno">16807</span>  <span class="comment">/* Find splitting variable. */</span></div><div class="line"><a name="l16808"></a><span class="lineno">16808</span>  flevel = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16809"></a><span class="lineno">16809</span>  Gr = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(G);</div><div class="line"><a name="l16810"></a><span class="lineno">16810</span>  glevel = <a class="code" href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a>(dd,Gr-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>);</div><div class="line"><a name="l16811"></a><span class="lineno">16811</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(flevel,glevel);</div><div class="line"><a name="l16812"></a><span class="lineno">16812</span>  Dr = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(D);</div><div class="line"><a name="l16813"></a><span class="lineno">16813</span>  dlevel = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[Dr-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l16814"></a><span class="lineno">16814</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(top,dlevel);</div><div class="line"><a name="l16815"></a><span class="lineno">16815</span> </div><div class="line"><a name="l16816"></a><span class="lineno">16816</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l16817"></a><span class="lineno">16817</span>  <span class="keywordflow">if</span> (top == flevel) {</div><div class="line"><a name="l16818"></a><span class="lineno">16818</span>  Fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l16819"></a><span class="lineno">16819</span>  Fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l16820"></a><span class="lineno">16820</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16821"></a><span class="lineno">16821</span>  Fv = Fvn = <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l16822"></a><span class="lineno">16822</span>  }</div><div class="line"><a name="l16823"></a><span class="lineno">16823</span>  <span class="keywordflow">if</span> (top == glevel) {</div><div class="line"><a name="l16824"></a><span class="lineno">16824</span>  Gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(Gr);</div><div class="line"><a name="l16825"></a><span class="lineno">16825</span>  Gvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(Gr);</div><div class="line"><a name="l16826"></a><span class="lineno">16826</span>  <span class="keywordflow">if</span> (G != Gr) {</div><div class="line"><a name="l16827"></a><span class="lineno">16827</span>  Gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gv);</div><div class="line"><a name="l16828"></a><span class="lineno">16828</span>  Gvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Gvn);</div><div class="line"><a name="l16829"></a><span class="lineno">16829</span>  }</div><div class="line"><a name="l16830"></a><span class="lineno">16830</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16831"></a><span class="lineno">16831</span>  Gv = Gvn = G;</div><div class="line"><a name="l16832"></a><span class="lineno">16832</span>  }</div><div class="line"><a name="l16833"></a><span class="lineno">16833</span>  <span class="keywordflow">if</span> (top == dlevel) {</div><div class="line"><a name="l16834"></a><span class="lineno">16834</span>  Dv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(Dr);</div><div class="line"><a name="l16835"></a><span class="lineno">16835</span>  Dvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(Dr);</div><div class="line"><a name="l16836"></a><span class="lineno">16836</span>  <span class="keywordflow">if</span> (D != Dr) {</div><div class="line"><a name="l16837"></a><span class="lineno">16837</span>  Dv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Dv);</div><div class="line"><a name="l16838"></a><span class="lineno">16838</span>  Dvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(Dvn);</div><div class="line"><a name="l16839"></a><span class="lineno">16839</span>  }</div><div class="line"><a name="l16840"></a><span class="lineno">16840</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16841"></a><span class="lineno">16841</span>  Dv = Dvn = D;</div><div class="line"><a name="l16842"></a><span class="lineno">16842</span>  }</div><div class="line"><a name="l16843"></a><span class="lineno">16843</span> </div><div class="line"><a name="l16844"></a><span class="lineno">16844</span>  <span class="comment">/* Solve recursively. */</span></div><div class="line"><a name="l16845"></a><span class="lineno">16845</span>  res = <a class="code" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a>(dd,Fv,Gv,Dv);</div><div class="line"><a name="l16846"></a><span class="lineno">16846</span>  <span class="keywordflow">if</span> (res != 0) {</div><div class="line"><a name="l16847"></a><span class="lineno">16847</span>  res = <a class="code" href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a>(dd,Fvn,Gvn,Dvn);</div><div class="line"><a name="l16848"></a><span class="lineno">16848</span>  }</div><div class="line"><a name="l16849"></a><span class="lineno">16849</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd,<a class="code" href="cuddInt_8h.html#a544fba69760437cee493d4111f2e956f">DD_EQUIV_DC_TAG</a>,F,G,D,(res) ? One : <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(One));</div><div class="line"><a name="l16850"></a><span class="lineno">16850</span> </div><div class="line"><a name="l16851"></a><span class="lineno">16851</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l16852"></a><span class="lineno">16852</span> </div><div class="line"><a name="l16853"></a><span class="lineno">16853</span>  } <span class="comment">/* end of Cudd_EquivDC */</span></div><div class="ttc" id="cuddInt_8c_html_a3e078600dd9087c623e1bdfea00d599d"><div class="ttname"><a href="cuddInt_8c.html#a3e078600dd9087c623e1bdfea00d599d">Cudd_EquivDC</a></div><div class="ttdeci">int Cudd_EquivDC(DdManager *dd, DdNode *F, DdNode *G, DdNode *D)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16770">cuddInt.c:16770</a></div></div>
|
|
5834
5834
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
5835
5835
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
5836
5836
|
<div class="ttc" id="cuddInt_8c_html_ab2e7f6c2eabfb9af8ed7e52dcc00a678"><div class="ttname"><a href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a></div><div class="ttdeci">DdNode * cuddCacheLookup(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04413">cuddInt.c:4413</a></div></div>
|
|
@@ -5840,10 +5840,10 @@ ref count error at node </li>
|
|
|
5840
5840
|
<div class="ttc" id="cuddInt_8h_html_a2ca9cfb1642557eefc559198c4801092"><div class="ttname"><a href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a></div><div class="ttdeci">#define ddMin(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00788">cuddInt.h:788</a></div></div>
|
|
5841
5841
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
5842
5842
|
<div class="ttc" id="cuddInt_8h_html_aa7299d1217a57571ef88e9ac90530978"><div class="ttname"><a href="cuddInt_8h.html#aa7299d1217a57571ef88e9ac90530978">cuddI</a></div><div class="ttdeci">#define cuddI(dd, index)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00676">cuddInt.h:676</a></div></div>
|
|
5843
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
5844
5843
|
<div class="ttc" id="cuddInt_8h_html_a544fba69760437cee493d4111f2e956f"><div class="ttname"><a href="cuddInt_8h.html#a544fba69760437cee493d4111f2e956f">DD_EQUIV_DC_TAG</a></div><div class="ttdeci">#define DD_EQUIV_DC_TAG</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00183">cuddInt.h:183</a></div></div>
|
|
5845
5844
|
<div class="ttc" id="cuddInt_8c_html_ac766e39390bf4d3c975d4a6bd34653dc"><div class="ttname"><a href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a></div><div class="ttdeci">void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04283">cuddInt.c:4283</a></div></div>
|
|
5846
5845
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
5846
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
5847
5847
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
5848
5848
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
5849
5849
|
<div class="ttc" id="cuddInt_8h_html_a0fc86b7b0c157b7fa3738661d65a22d7"><div class="ttname"><a href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a></div><div class="ttdeci">#define DD_ONE(dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00881">cuddInt.h:881</a></div></div>
|
|
@@ -6397,7 +6397,7 @@ ref count error at node </li>
|
|
|
6397
6397
|
<p>SeeAlso [Cudd_ShortestPath] </p>
|
|
6398
6398
|
|
|
6399
6399
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l16616">16616</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
6400
|
-
<div class="fragment"><div class="line"><a name="l16620"></a><span class="lineno">16620</span>  {</div><div class="line"><a name="l16621"></a><span class="lineno">16621</span>  <span class="keyword">register</span> <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#
|
|
6400
|
+
<div class="fragment"><div class="line"><a name="l16620"></a><span class="lineno">16620</span>  {</div><div class="line"><a name="l16621"></a><span class="lineno">16621</span>  <span class="keyword">register</span> <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l16622"></a><span class="lineno">16622</span>  <a class="code" href="structst__table.html">st_table</a> *visited;</div><div class="line"><a name="l16623"></a><span class="lineno">16623</span>  <a class="code" href="structDdNode.html">DdNode</a> *sol;</div><div class="line"><a name="l16624"></a><span class="lineno">16624</span>  <a class="code" href="structcuddPathPair.html">cuddPathPair</a> *rootPair;</div><div class="line"><a name="l16625"></a><span class="lineno">16625</span>  <span class="keywordtype">int</span> complement, cost;</div><div class="line"><a name="l16626"></a><span class="lineno">16626</span> </div><div class="line"><a name="l16627"></a><span class="lineno">16627</span>  <a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a> = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l16628"></a><span class="lineno">16628</span>  <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a> = <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(manager);</div><div class="line"><a name="l16629"></a><span class="lineno">16629</span> </div><div class="line"><a name="l16630"></a><span class="lineno">16630</span>  <span class="keywordflow">if</span> (f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>) || f == <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>) {</div><div class="line"><a name="l16631"></a><span class="lineno">16631</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a9f237f17f4e79d5b89149e09152edabe">length</a> != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l16632"></a><span class="lineno">16632</span>  *<a class="code" href="cJSON_8h.html#a9f237f17f4e79d5b89149e09152edabe">length</a> = <a class="code" href="cuddInt_8c.html#a6994699d7a2a82b8f838e9d8d408095a">DD_BIGGY</a>;</div><div class="line"><a name="l16633"></a><span class="lineno">16633</span>  }</div><div class="line"><a name="l16634"></a><span class="lineno">16634</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>));</div><div class="line"><a name="l16635"></a><span class="lineno">16635</span>  }</div><div class="line"><a name="l16636"></a><span class="lineno">16636</span>  <span class="comment">/* From this point on, a path exists. */</span></div><div class="line"><a name="l16637"></a><span class="lineno">16637</span> </div><div class="line"><a name="l16638"></a><span class="lineno">16638</span>  <span class="keywordflow">do</span> {</div><div class="line"><a name="l16639"></a><span class="lineno">16639</span>  manager-><a class="code" href="structDdManager.html#ab8c81b5f0658b90c2c3bd339123a1f7a">reordered</a> = 0;</div><div class="line"><a name="l16640"></a><span class="lineno">16640</span> </div><div class="line"><a name="l16641"></a><span class="lineno">16641</span>  <span class="comment">/* Initialize visited table. */</span></div><div class="line"><a name="l16642"></a><span class="lineno">16642</span>  visited = <a class="code" href="st_8h.html#a410a87c90bd4719f24fecc904b9426ed">st_init_table</a>(<a class="code" href="st_8h.html#a6073f524b9f0ec98b2b3d3e59e4e3fbf">st_ptrcmp</a>, <a class="code" href="st_8h.html#a144fc385b211526daab6da9ad5a854cc">st_ptrhash</a>);</div><div class="line"><a name="l16643"></a><span class="lineno">16643</span> </div><div class="line"><a name="l16644"></a><span class="lineno">16644</span>  <span class="comment">/* Now get the length of the shortest path(s) from f to 1. */</span></div><div class="line"><a name="l16645"></a><span class="lineno">16645</span>  (void) <a class="code" href="cuddInt_8c.html#a6506f1ae80b0f85d1e01da0db4a4f31a">getLargest</a>(f, visited);</div><div class="line"><a name="l16646"></a><span class="lineno">16646</span> </div><div class="line"><a name="l16647"></a><span class="lineno">16647</span>  complement = <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f);</div><div class="line"><a name="l16648"></a><span class="lineno">16648</span> </div><div class="line"><a name="l16649"></a><span class="lineno">16649</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l16650"></a><span class="lineno">16650</span> </div><div class="line"><a name="l16651"></a><span class="lineno">16651</span>  <span class="keywordflow">if</span> (!<a class="code" href="st_8h.html#a0ed63fd0cb21b0a1fe502e84aa5563ef">st_lookup</a>(visited, F, &rootPair)) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l16652"></a><span class="lineno">16652</span> </div><div class="line"><a name="l16653"></a><span class="lineno">16653</span>  <span class="keywordflow">if</span> (complement) {</div><div class="line"><a name="l16654"></a><span class="lineno">16654</span>  cost = rootPair-><a class="code" href="structcuddPathPair.html#a968dc3d34b592da2876517a687873281">neg</a>;</div><div class="line"><a name="l16655"></a><span class="lineno">16655</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l16656"></a><span class="lineno">16656</span>  cost = rootPair-><a class="code" href="structcuddPathPair.html#adf2ec174fe645c74c4d045a9109364f4">pos</a>;</div><div class="line"><a name="l16657"></a><span class="lineno">16657</span>  }</div><div class="line"><a name="l16658"></a><span class="lineno">16658</span> </div><div class="line"><a name="l16659"></a><span class="lineno">16659</span>  <span class="comment">/* Recover an actual shortest path. */</span></div><div class="line"><a name="l16660"></a><span class="lineno">16660</span>  sol = <a class="code" href="cuddInt_8c.html#ac4564d7da48b5f6457d7adca5e619b4c">getCube</a>(manager,visited,f,cost);</div><div class="line"><a name="l16661"></a><span class="lineno">16661</span> </div><div class="line"><a name="l16662"></a><span class="lineno">16662</span>  <a class="code" href="st_8h.html#a5341675ff925b7a670ab4705735ceb38">st_foreach</a>(visited, <a class="code" href="cuddInt_8c.html#a498f7e0ebf19b278dd9e7d9651b82eef">freePathPair</a>, <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l16663"></a><span class="lineno">16663</span>  <a class="code" href="st_8h.html#acb004847ef312373d65bfb0d1a21c5b3">st_free_table</a>(visited);</div><div class="line"><a name="l16664"></a><span class="lineno">16664</span> </div><div class="line"><a name="l16665"></a><span class="lineno">16665</span>  } <span class="keywordflow">while</span> (manager-><a class="code" href="structDdManager.html#ab8c81b5f0658b90c2c3bd339123a1f7a">reordered</a> == 1);</div><div class="line"><a name="l16666"></a><span class="lineno">16666</span> </div><div class="line"><a name="l16667"></a><span class="lineno">16667</span>  <span class="keywordflow">if</span> (<a class="code" href="cJSON_8h.html#a9f237f17f4e79d5b89149e09152edabe">length</a> != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l16668"></a><span class="lineno">16668</span>  *<a class="code" href="cJSON_8h.html#a9f237f17f4e79d5b89149e09152edabe">length</a> = cost;</div><div class="line"><a name="l16669"></a><span class="lineno">16669</span>  }</div><div class="line"><a name="l16670"></a><span class="lineno">16670</span>  <span class="keywordflow">return</span>(sol);</div><div class="line"><a name="l16671"></a><span class="lineno">16671</span> </div><div class="line"><a name="l16672"></a><span class="lineno">16672</span>  } <span class="comment">/* end of Cudd_LargestCube */</span></div><div class="ttc" id="st_8h_html_a0ed63fd0cb21b0a1fe502e84aa5563ef"><div class="ttname"><a href="st_8h.html#a0ed63fd0cb21b0a1fe502e84aa5563ef">st_lookup</a></div><div class="ttdeci">int st_lookup(st_table *, void *, void *)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00271">st.c:271</a></div></div>
|
|
6401
6401
|
<div class="ttc" id="structst__table_html"><div class="ttname"><a href="structst__table.html">st_table</a></div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00061">st.h:61</a></div></div>
|
|
6402
6402
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
6403
6403
|
<div class="ttc" id="cudd_8h_html_a352ef8d39e760eaabae6d58d9a5ddbfc"><div class="ttname"><a href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a></div><div class="ttdeci">#define Cudd_Not(node)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00352">cudd.h:352</a></div></div>
|
|
@@ -6415,8 +6415,8 @@ ref count error at node </li>
|
|
|
6415
6415
|
<div class="ttc" id="st_8h_html_a6073f524b9f0ec98b2b3d3e59e4e3fbf"><div class="ttname"><a href="st_8h.html#a6073f524b9f0ec98b2b3d3e59e4e3fbf">st_ptrcmp</a></div><div class="ttdeci">int st_ptrcmp(const char *, const char *)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00585">st.c:585</a></div></div>
|
|
6416
6416
|
<div class="ttc" id="cuddInt_8c_html_a6994699d7a2a82b8f838e9d8d408095a"><div class="ttname"><a href="cuddInt_8c.html#a6994699d7a2a82b8f838e9d8d408095a">DD_BIGGY</a></div><div class="ttdeci">#define DD_BIGGY</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16539">cuddInt.c:16539</a></div></div>
|
|
6417
6417
|
<div class="ttc" id="st_8h_html_a410a87c90bd4719f24fecc904b9426ed"><div class="ttname"><a href="st_8h.html#a410a87c90bd4719f24fecc904b9426ed">st_init_table</a></div><div class="ttdeci">st_table * st_init_table(ST_PFICPCP, ST_PFICPI)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00148">st.c:148</a></div></div>
|
|
6418
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
6419
6418
|
<div class="ttc" id="cuddInt_8c_html_a6506f1ae80b0f85d1e01da0db4a4f31a"><div class="ttname"><a href="cuddInt_8c.html#a6506f1ae80b0f85d1e01da0db4a4f31a">getLargest</a></div><div class="ttdeci">static cuddPathPair getLargest(DdNode *root, st_table *visited)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l17347">cuddInt.c:17347</a></div></div>
|
|
6419
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
6420
6420
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
6421
6421
|
<div class="ttc" id="st_8h_html_a144fc385b211526daab6da9ad5a854cc"><div class="ttname"><a href="st_8h.html#a144fc385b211526daab6da9ad5a854cc">st_ptrhash</a></div><div class="ttdeci">int st_ptrhash(char *, int)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00547">st.c:547</a></div></div>
|
|
6422
6422
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
@@ -7828,7 +7828,7 @@ Symmetric Sifting </li>
|
|
|
7828
7828
|
<p>SeeAlso [Cudd_bddAnd] </p>
|
|
7829
7829
|
|
|
7830
7830
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l03633">3633</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
7831
|
-
<div class="fragment"><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> {</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *fv, *fnv, *G, *gv, *gnv;</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *r, *t, *e;</div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span> </div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> </div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>  <span class="keywordflow">if</span> (F == G) {</div><div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>  <span class="keywordflow">if</span> (f == g) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one));</div><div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>  }</div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>  <span class="keywordflow">if</span> (F == one) {</div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>  }</div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>  <span class="keywordflow">if</span> (G == one) {</div><div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>  }</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span> </div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>  <span class="comment">/* At this point f and g are not constant. */</span></div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>  <span class="keywordflow">if</span> (f > g) { <span class="comment">/* Try to increase cache efficiency. */</span></div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = f;</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>  f = g;</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>  g = tmp;</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>  }</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span> </div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 || G-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>  r = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(manager, <a class="code" href="cuddInt_8c.html#a8374b23de03000aeafb9b6deecee4b3c">Cudd_bddAnd</a>, f, g);</div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>  }</div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span> </div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>  <span class="comment">/* Here we can skip the use of cuddI, because the operands are known</span></div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span> <span class="comment"> ** to be non-constant.</span></div><div class="line"><a name="l03678"></a><span class="lineno"> 3678</span> <span class="comment"> */</span></div><div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>  topf = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>  topg = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> </div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>  }</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>  fv = fnv = f;</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>  }</div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span> </div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>  }</div><div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>  gv = gnv = g;</div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>  }</div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span> </div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>  t = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, fv, gv);</div><div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span> </div><div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>  e = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, fnv, gnv);</div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>  }</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span> </div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>  r = t;</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>  }</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>  }</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>  }</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>  }</div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 || G-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a8374b23de03000aeafb9b6deecee4b3c">Cudd_bddAnd</a>, f, g, r);</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>  <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span> </div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span> } <span class="comment">/* end of cuddBddAndRecur */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
7831
|
+
<div class="fragment"><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> {</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *fv, *fnv, *G, *gv, *gnv;</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *r, *t, *e;</div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span> </div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> </div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>  <span class="keywordflow">if</span> (F == G) {</div><div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>  <span class="keywordflow">if</span> (f == g) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one));</div><div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>  }</div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>  <span class="keywordflow">if</span> (F == one) {</div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>  }</div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>  <span class="keywordflow">if</span> (G == one) {</div><div class="line"><a name="l03657"></a><span class="lineno"> 3657</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>  <span class="keywordflow">else</span> <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>  }</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span> </div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>  <span class="comment">/* At this point f and g are not constant. */</span></div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>  <span class="keywordflow">if</span> (f > g) { <span class="comment">/* Try to increase cache efficiency. */</span></div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = f;</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>  f = g;</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>  g = tmp;</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>  }</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span> </div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 || G-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>  r = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(manager, <a class="code" href="cuddInt_8c.html#a8374b23de03000aeafb9b6deecee4b3c">Cudd_bddAnd</a>, f, g);</div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>  }</div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span> </div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>  <span class="comment">/* Here we can skip the use of cuddI, because the operands are known</span></div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span> <span class="comment"> ** to be non-constant.</span></div><div class="line"><a name="l03678"></a><span class="lineno"> 3678</span> <span class="comment"> */</span></div><div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>  topf = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>  topg = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span> </div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>  }</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>  fv = fnv = f;</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>  }</div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span> </div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>  }</div><div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>  gv = gnv = g;</div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>  }</div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span> </div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>  t = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, fv, gv);</div><div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span> </div><div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>  e = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, fnv, gnv);</div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>  }</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span> </div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>  r = t;</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>  }</div><div class="line"><a name="l03728"></a><span class="lineno"> 3728</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>  }</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>  }</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>  }</div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l03739"></a><span class="lineno"> 3739</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 || G-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a8374b23de03000aeafb9b6deecee4b3c">Cudd_bddAnd</a>, f, g, r);</div><div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>  <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l03743"></a><span class="lineno"> 3743</span> </div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span> } <span class="comment">/* end of cuddBddAndRecur */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
7832
7832
|
<div class="ttc" id="cuddInt_8c_html_a8374b23de03000aeafb9b6deecee4b3c"><div class="ttname"><a href="cuddInt_8c.html#a8374b23de03000aeafb9b6deecee4b3c">Cudd_bddAnd</a></div><div class="ttdeci">DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03114">cuddInt.c:3114</a></div></div>
|
|
7833
7833
|
<div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
7834
7834
|
<div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
@@ -7843,8 +7843,8 @@ Symmetric Sifting </li>
|
|
|
7843
7843
|
<div class="ttc" id="cuddInt_8c_html_a15905d5750b5f2f948329ce0f67a0fc8"><div class="ttname"><a href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a></div><div class="ttdeci">void Cudd_IterDerefBdd(DdManager *table, DdNode *n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l14090">cuddInt.c:14090</a></div></div>
|
|
7844
7844
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
7845
7845
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
7846
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
7847
7846
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
7847
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
7848
7848
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
7849
7849
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
7850
7850
|
<div class="ttc" id="cuddInt_8h_html_a0fc86b7b0c157b7fa3738661d65a22d7"><div class="ttname"><a href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a></div><div class="ttdeci">#define DD_ONE(dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00881">cuddInt.h:881</a></div></div>
|
|
@@ -7953,7 +7953,7 @@ Symmetric Sifting </li>
|
|
|
7953
7953
|
<p>SeeAlso [Cudd_bddExistAbstract Cudd_bddUnivAbstract] </p>
|
|
7954
7954
|
|
|
7955
7955
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l02437">2437</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
7956
|
-
<div class="fragment"><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> {</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *T, *E, *res, *res1, *res2, *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>;</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> </div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="comment">/* Cube is guaranteed to be a cube at this point. */</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (cube == one || F == one) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  }</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  <span class="comment">/* From now on, f and cube are non-constant. */</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span> </div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="comment">/* Abstract a variable that does not appear in f. */</span></div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  <span class="keywordflow">while</span> (manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>] > manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>]) {</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  cube = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube);</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keywordflow">if</span> (cube == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> </div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="comment">/* Check the cache. */</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 && (res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube)) != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  }</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> </div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="comment">/* Compute the cofactors of f. */</span></div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  T = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); E = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  T = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(T); E = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(E);</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  }</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> </div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  <span class="comment">/* If the two indices are the same, so are their levels. */</span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a> == cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordflow">if</span> (T == one || E == one || T == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(E)) {</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  }</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  res1 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, T, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube));</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <span class="keywordflow">if</span> (res1 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordflow">if</span> (res1 == one) {</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, one);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  }</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res1);</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  res2 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, E, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keywordflow">if</span> (res2 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager,res1);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  }</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res2);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  res = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res1), <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res2));</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  res = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res);</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res);</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, res);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  } <span class="keywordflow">else</span> { <span class="comment">/* if (cuddI(manager,F->index) < cuddI(manager,cube->index)) */</span></div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  res1 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, T, cube);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  <span class="keywordflow">if</span> (res1 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res1);</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  res2 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, E, cube);</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  <span class="keywordflow">if</span> (res2 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  }</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res2);</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  <span class="comment">/* ITE takes care of possible complementation of res1 and of the</span></div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> <span class="comment"> ** case in which res1 == res2. */</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  res = <a class="code" href="cuddInt_8c.html#a6d52cd44b8033b3be8f23d21c46cd425">cuddBddIteRecur</a>(manager, manager-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>], res1, res2);</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res1);</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res2);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, res);</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  }</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span> </div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> } <span class="comment">/* end of cuddBddExistAbstractRecur */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
7956
|
+
<div class="fragment"><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> {</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *T, *E, *res, *res1, *res2, *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>;</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span> </div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> </div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  <span class="comment">/* Cube is guaranteed to be a cube at this point. */</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  <span class="keywordflow">if</span> (cube == one || F == one) {</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  }</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  <span class="comment">/* From now on, f and cube are non-constant. */</span></div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span> </div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  <span class="comment">/* Abstract a variable that does not appear in f. */</span></div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  <span class="keywordflow">while</span> (manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>] > manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>]) {</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  cube = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube);</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  <span class="keywordflow">if</span> (cube == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> </div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  <span class="comment">/* Check the cache. */</span></div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1 && (res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube)) != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  }</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> </div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  <span class="comment">/* Compute the cofactors of f. */</span></div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>  T = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); E = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>  T = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(T); E = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(E);</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>  }</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> </div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>  <span class="comment">/* If the two indices are the same, so are their levels. */</span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a> == cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>) {</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>  <span class="keywordflow">if</span> (T == one || E == one || T == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(E)) {</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  }</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  res1 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, T, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube));</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  <span class="keywordflow">if</span> (res1 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  <span class="keywordflow">if</span> (res1 == one) {</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, one);</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  }</div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res1);</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  res2 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, E, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube));</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  <span class="keywordflow">if</span> (res2 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager,res1);</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  }</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res2);</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  res = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res1), <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res2));</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  res = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res);</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res);</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, res);</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res);</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  } <span class="keywordflow">else</span> { <span class="comment">/* if (cuddI(manager,F->index) < cuddI(manager,cube->index)) */</span></div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  res1 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, T, cube);</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  <span class="keywordflow">if</span> (res1 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res1);</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  res2 = <a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, E, cube);</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  <span class="keywordflow">if</span> (res2 == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  }</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res2);</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  <span class="comment">/* ITE takes care of possible complementation of res1 and of the</span></div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> <span class="comment"> ** case in which res1 == res2. */</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>  res = <a class="code" href="cuddInt_8c.html#a6d52cd44b8033b3be8f23d21c46cd425">cuddBddIteRecur</a>(manager, manager-><a class="code" href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">vars</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>], res1, res2);</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res1);</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, res2);</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  }</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res1);</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res2);</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1)</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(manager, <a class="code" href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a>, f, cube, res);</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  }</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span> </div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> } <span class="comment">/* end of cuddBddExistAbstractRecur */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
7957
7957
|
<div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
7958
7958
|
<div class="ttc" id="cuddInt_8c_html_aedc6f9870c712caec0c42ba311984288"><div class="ttname"><a href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a></div><div class="ttdeci">DdNode * cuddBddExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l02437">cuddInt.c:2437</a></div></div>
|
|
7959
7959
|
<div class="ttc" id="cuddInt_8h_html_ab274a54f55f018beea73ed6f1bc630c2"><div class="ttname"><a href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a></div><div class="ttdeci">#define cuddDeref(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00594">cuddInt.h:594</a></div></div>
|
|
@@ -7966,10 +7966,10 @@ Symmetric Sifting </li>
|
|
|
7966
7966
|
<div class="ttc" id="cuddInt_8c_html_a15905d5750b5f2f948329ce0f67a0fc8"><div class="ttname"><a href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a></div><div class="ttdeci">void Cudd_IterDerefBdd(DdManager *table, DdNode *n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l14090">cuddInt.c:14090</a></div></div>
|
|
7967
7967
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
7968
7968
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
7969
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
7970
7969
|
<div class="ttc" id="cuddInt_8c_html_a38ddb1590403cc2c2d6c382b68835269"><div class="ttname"><a href="cuddInt_8c.html#a38ddb1590403cc2c2d6c382b68835269">Cudd_bddExistAbstract</a></div><div class="ttdeci">DdNode * Cudd_bddExistAbstract(DdManager *manager, DdNode *f, DdNode *cube)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l02331">cuddInt.c:2331</a></div></div>
|
|
7971
7970
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
7972
7971
|
<div class="ttc" id="structDdManager_html_a70f75f877a9e8f1b7a1c219cd4675ce1"><div class="ttname"><a href="structDdManager.html#a70f75f877a9e8f1b7a1c219cd4675ce1">DdManager::vars</a></div><div class="ttdeci">DdNode ** vars</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00387">cuddInt.h:387</a></div></div>
|
|
7972
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
7973
7973
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
7974
7974
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
7975
7975
|
<div class="ttc" id="cuddInt_8h_html_a0fc86b7b0c157b7fa3738661d65a22d7"><div class="ttname"><a href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a></div><div class="ttdeci">#define DD_ONE(dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00881">cuddInt.h:881</a></div></div>
|
|
@@ -8017,7 +8017,7 @@ Symmetric Sifting </li>
|
|
|
8017
8017
|
<p>SeeAlso [Cudd_bddIntersect] </p>
|
|
8018
8018
|
|
|
8019
8019
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l03518">3518</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
8020
|
-
<div class="fragment"><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span> {</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>  <a class="code" href="structDdNode.html">DdNode</a> *res;</div><div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *G, *t, *e;</div><div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>  <a class="code" href="structDdNode.html">DdNode</a> *fv, *fnv, *gv, *gnv;</div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>, topf, topg;</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span> </div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span> </div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>  <span class="keywordflow">if</span> (f == zero || g == zero || f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>  <span class="keywordflow">if</span> (f == g || g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span> </div><div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>  <span class="comment">/* At this point f and g are not constant. */</span></div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>  <span class="keywordflow">if</span> (f > g) { <a class="code" href="structDdNode.html">DdNode</a> *tmp = f; f = g; g = tmp; }</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>  res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,<a class="code" href="cuddInt_8c.html#a6dc109a28a03aae73d3390dc5846a8cb">Cudd_bddIntersect</a>,f,g);</div><div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>  <span class="keywordflow">if</span> (res != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span> </div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>  <span class="comment">/* Find splitting variable. Here we can skip the use of cuddI,</span></div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span> <span class="comment"> ** because the operands are known to be non-constant.</span></div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span> <span class="comment"> */</span></div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span> </div><div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>  }</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>  fv = fnv = f;</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>  }</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span> </div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>  }</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>  gv = gnv = g;</div><div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>  }</div><div class="line"><a name="l03575"></a><span class="lineno"> 3575</span> </div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>  <span class="comment">/* Compute partial results. */</span></div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>  t = <a class="code" href="cuddInt_8c.html#aa43deef9cc0de026d2b4917aef1b4d62">cuddBddIntersectRecur</a>(dd,fv,gv);</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>  <span class="keywordflow">if</span> (t != zero) {</div><div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>  e = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>  e = <a class="code" href="cuddInt_8c.html#aa43deef9cc0de026d2b4917aef1b4d62">cuddBddIntersectRecur</a>(dd,fnv,gnv);</div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>  }</div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>  }</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span> </div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>  <span class="keywordflow">if</span> (t == e) { <span class="comment">/* both equal zero */</span></div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>  res = t;</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>  res = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, e);</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>  }</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>  res = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res);</div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>  res = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, e);</div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>  }</div><div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>  }</div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span> </div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,<a class="code" href="cuddInt_8c.html#a6dc109a28a03aae73d3390dc5846a8cb">Cudd_bddIntersect</a>,f,g,res);</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span> </div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> </div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span> } <span class="comment">/* end of cuddBddIntersectRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
8020
|
+
<div class="fragment"><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span> {</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>  <a class="code" href="structDdNode.html">DdNode</a> *res;</div><div class="line"><a name="l03524"></a><span class="lineno"> 3524</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *G, *t, *e;</div><div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>  <a class="code" href="structDdNode.html">DdNode</a> *fv, *fnv, *gv, *gnv;</div><div class="line"><a name="l03526"></a><span class="lineno"> 3526</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l03527"></a><span class="lineno"> 3527</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>, topf, topg;</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span> </div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span> </div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>  <span class="keywordflow">if</span> (f == zero || g == zero || f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>  <span class="keywordflow">if</span> (f == g || g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>  <span class="keywordflow">if</span> (f == one) <span class="keywordflow">return</span>(g);</div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span> </div><div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>  <span class="comment">/* At this point f and g are not constant. */</span></div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>  <span class="keywordflow">if</span> (f > g) { <a class="code" href="structDdNode.html">DdNode</a> *tmp = f; f = g; g = tmp; }</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>  res = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,<a class="code" href="cuddInt_8c.html#a6dc109a28a03aae73d3390dc5846a8cb">Cudd_bddIntersect</a>,f,g);</div><div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>  <span class="keywordflow">if</span> (res != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span> </div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>  <span class="comment">/* Find splitting variable. Here we can skip the use of cuddI,</span></div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span> <span class="comment"> ** because the operands are known to be non-constant.</span></div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span> <span class="comment"> */</span></div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span> </div><div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>  <span class="comment">/* Compute cofactors. */</span></div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>  }</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>  fv = fnv = f;</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>  }</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span> </div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>  }</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>  gv = gnv = g;</div><div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>  }</div><div class="line"><a name="l03575"></a><span class="lineno"> 3575</span> </div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>  <span class="comment">/* Compute partial results. */</span></div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>  t = <a class="code" href="cuddInt_8c.html#aa43deef9cc0de026d2b4917aef1b4d62">cuddBddIntersectRecur</a>(dd,fv,gv);</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>  <span class="keywordflow">if</span> (t != zero) {</div><div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>  e = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>  e = <a class="code" href="cuddInt_8c.html#aa43deef9cc0de026d2b4917aef1b4d62">cuddBddIntersectRecur</a>(dd,fnv,gnv);</div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>  }</div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>  }</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span> </div><div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>  <span class="keywordflow">if</span> (t == e) { <span class="comment">/* both equal zero */</span></div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>  res = t;</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>  res = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, e);</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>  }</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>  res = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(res);</div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>  res = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, t);</div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd, e);</div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>  }</div><div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>  }</div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span> </div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,<a class="code" href="cuddInt_8c.html#a6dc109a28a03aae73d3390dc5846a8cb">Cudd_bddIntersect</a>,f,g,res);</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span> </div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> </div><div class="line"><a name="l03616"></a><span class="lineno"> 3616</span> } <span class="comment">/* end of cuddBddIntersectRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
8021
8021
|
<div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
8022
8022
|
<div class="ttc" id="cuddInt_8h_html_ab274a54f55f018beea73ed6f1bc630c2"><div class="ttname"><a href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a></div><div class="ttdeci">#define cuddDeref(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00594">cuddInt.h:594</a></div></div>
|
|
8023
8023
|
<div class="ttc" id="cuddInt_8c_html_a767e31fbbfdbddc623396dde86249497"><div class="ttname"><a href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a></div><div class="ttdeci">DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l20495">cuddInt.c:20495</a></div></div>
|
|
@@ -8031,8 +8031,8 @@ Symmetric Sifting </li>
|
|
|
8031
8031
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
8032
8032
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
8033
8033
|
<div class="ttc" id="cuddInt_8c_html_aa43deef9cc0de026d2b4917aef1b4d62"><div class="ttname"><a href="cuddInt_8c.html#aa43deef9cc0de026d2b4917aef1b4d62">cuddBddIntersectRecur</a></div><div class="ttdeci">DdNode * cuddBddIntersectRecur(DdManager *dd, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l03518">cuddInt.c:3518</a></div></div>
|
|
8034
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
8035
8034
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
8035
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
8036
8036
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
8037
8037
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
8038
8038
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
@@ -8280,7 +8280,7 @@ Symmetric Sifting </li>
|
|
|
8280
8280
|
<p>SeeAlso [Cudd_bddAndAbstract] </p>
|
|
8281
8281
|
|
|
8282
8282
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l02547">2547</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
8283
|
-
<div class="fragment"><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> {</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *fv, *fnv, *G, *gv, *gnv;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *r, *t, *e, *Cube;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, topcube, top, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  <span class="keywordflow">if</span> (f == g) {</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  }</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <span class="keywordflow">if</span> (f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  }</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  <span class="keywordflow">if</span> (cube == one) {</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aed935896575aab5d56fefdd6d351b676">cuddBddXorRecur</a>(manager, f, g));</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  }</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  <span class="keywordflow">if</span> (f == one) {</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g), cube));</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  }</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">if</span> (g == one) {</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f), cube));</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  }</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="keywordflow">if</span> (f == zero) {</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, g, cube));</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  }</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <span class="keywordflow">if</span> (g == zero) {</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, f, cube));</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  }</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="comment">/* At this point f, g, and cube are not constant. */</span></div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> </div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  <span class="keywordflow">if</span> (f > g) { <span class="comment">/* Try to increase cache efficiency. */</span></div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = f;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  f = g;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  g = tmp;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  }</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> </div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  r = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube);</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  }</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> </div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  <span class="comment">/* Here we can skip the use of cuddI, because the operands are known</span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span> <span class="comment"> ** to be non-constant.</span></div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> <span class="comment"> */</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  topf = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  topg = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(topf, topg);</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  topcube = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> </div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  <span class="keywordflow">if</span> (topcube < top) {</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, f, g, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube)));</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  }</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  <span class="comment">/* Now, topcube >= top. */</span></div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span> </div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <span class="keywordflow">if</span> (topf == top) {</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  }</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  fv = fnv = f;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  }</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> </div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  <span class="keywordflow">if</span> (topg == top) {</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  }</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  gv = gnv = g;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  }</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> </div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  <span class="keywordflow">if</span> (topcube == top) {</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  Cube = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube);</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  Cube = cube;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  }</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> </div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  t = <a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, fv, gv, Cube);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> </div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  <span class="comment">/* Special case: 1 OR anything = 1. Hence, no need to compute</span></div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> <span class="comment"> ** the else branch if t is 1.</span></div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> <span class="comment"> */</span></div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  <span class="keywordflow">if</span> (t == one && topcube == top) {</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube, one);</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  }</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span> </div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  e = <a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, fnv, gnv, Cube);</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  }</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  <span class="keywordflow">if</span> (topcube == top) { <span class="comment">/* abstract */</span></div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  r = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t), <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  }</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(r);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(r);</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  r = t;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  }</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  }</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  }</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  }</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube, r);</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  <span class="keywordflow">return</span> (r);</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> </div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span> } <span class="comment">/* end of cuddBddXorExistAbstractRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
8283
|
+
<div class="fragment"><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> {</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *fv, *fnv, *G, *gv, *gnv;</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *r, *t, *e, *Cube;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf, topg, topcube, top, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> </div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(manager);</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(manager);</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> </div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  <span class="keywordflow">if</span> (f == g) {</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  }</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  <span class="keywordflow">if</span> (f == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g)) {</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  }</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  <span class="keywordflow">if</span> (cube == one) {</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aed935896575aab5d56fefdd6d351b676">cuddBddXorRecur</a>(manager, f, g));</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  }</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  <span class="keywordflow">if</span> (f == one) {</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g), cube));</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  }</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keywordflow">if</span> (g == one) {</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f), cube));</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  }</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="keywordflow">if</span> (f == zero) {</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, g, cube));</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  }</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <span class="keywordflow">if</span> (g == zero) {</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a>(manager, f, cube));</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  }</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span> </div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  <span class="comment">/* At this point f, g, and cube are not constant. */</span></div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span> </div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  <span class="keywordflow">if</span> (f > g) { <span class="comment">/* Try to increase cache efficiency. */</span></div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = f;</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  f = g;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  g = tmp;</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  }</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> </div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  <span class="comment">/* Check cache. */</span></div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  r = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube);</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  <span class="keywordflow">return</span>(r);</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  }</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span> </div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  <span class="comment">/* Here we can skip the use of cuddI, because the operands are known</span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span> <span class="comment"> ** to be non-constant.</span></div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> <span class="comment"> */</span></div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  topf = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  topg = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(topf, topg);</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  topcube = manager-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[cube-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span> </div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>  <span class="keywordflow">if</span> (topcube < top) {</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  <span class="keywordflow">return</span>(<a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, f, g, <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube)));</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  }</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  <span class="comment">/* Now, topcube >= top. */</span></div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span> </div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  <span class="keywordflow">if</span> (topf == top) {</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  fnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) {</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  fnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fnv);</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  }</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  index = G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  fv = fnv = f;</div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  }</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> </div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  <span class="keywordflow">if</span> (topg == top) {</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  gv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G);</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  gnv = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(g)) {</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  gv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gv);</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  gnv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(gnv);</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  }</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  gv = gnv = g;</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  }</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span> </div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  <span class="keywordflow">if</span> (topcube == top) {</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  Cube = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(cube);</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  Cube = cube;</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  }</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> </div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  t = <a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, fv, gv, Cube);</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> </div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  <span class="comment">/* Special case: 1 OR anything = 1. Hence, no need to compute</span></div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> <span class="comment"> ** the else branch if t is 1.</span></div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> <span class="comment"> */</span></div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  <span class="keywordflow">if</span> (t == one && topcube == top) {</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube, one);</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  <span class="keywordflow">return</span>(one);</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  }</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span> </div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  e = <a class="code" href="cuddInt_8c.html#adfcd7d01c37505e26ff4d7ae7617a43f">cuddBddXorExistAbstractRecur</a>(manager, fnv, gnv, Cube);</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  }</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> </div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  <span class="keywordflow">if</span> (topcube == top) { <span class="comment">/* abstract */</span></div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  r = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(manager, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t), <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  }</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(r);</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(r);</div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  r = t;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  }</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(manager,(<span class="keywordtype">int</span>)index,t,e);</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, t);</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(manager, e);</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  }</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  }</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>  }</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(manager, <a class="code" href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a>, f, g, cube, r);</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>  <span class="keywordflow">return</span> (r);</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span> </div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span> } <span class="comment">/* end of cuddBddXorExistAbstractRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
8284
8284
|
<div class="ttc" id="cuddInt_8c_html_aedc6f9870c712caec0c42ba311984288"><div class="ttname"><a href="cuddInt_8c.html#aedc6f9870c712caec0c42ba311984288">cuddBddExistAbstractRecur</a></div><div class="ttdeci">DdNode * cuddBddExistAbstractRecur(DdManager *manager, DdNode *f, DdNode *cube)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l02437">cuddInt.c:2437</a></div></div>
|
|
8285
8285
|
<div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
8286
8286
|
<div class="ttc" id="cuddInt_8h_html_ab274a54f55f018beea73ed6f1bc630c2"><div class="ttname"><a href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a></div><div class="ttdeci">#define cuddDeref(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00594">cuddInt.h:594</a></div></div>
|
|
@@ -8296,9 +8296,9 @@ Symmetric Sifting </li>
|
|
|
8296
8296
|
<div class="ttc" id="cuddInt_8h_html_a3413858dc69ab98261e7cefa2fabdead"><div class="ttname"><a href="cuddInt_8h.html#a3413858dc69ab98261e7cefa2fabdead">DD_BDD_XOR_EXIST_ABSTRACT_TAG</a></div><div class="ttdeci">#define DD_BDD_XOR_EXIST_ABSTRACT_TAG</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00175">cuddInt.h:175</a></div></div>
|
|
8297
8297
|
<div class="ttc" id="cuddInt_8h_html_a2ca9cfb1642557eefc559198c4801092"><div class="ttname"><a href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a></div><div class="ttdeci">#define ddMin(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00788">cuddInt.h:788</a></div></div>
|
|
8298
8298
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
8299
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
8300
8299
|
<div class="ttc" id="cuddInt_8c_html_ac766e39390bf4d3c975d4a6bd34653dc"><div class="ttname"><a href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a></div><div class="ttdeci">void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04283">cuddInt.c:4283</a></div></div>
|
|
8301
8300
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
8301
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
8302
8302
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
8303
8303
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
8304
8304
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
@@ -9174,7 +9174,7 @@ Symmetric Sifting </li>
|
|
|
9174
9174
|
<p>SeeAlso [Cudd_Cofactor] </p>
|
|
9175
9175
|
|
|
9176
9176
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l06226">6226</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
9177
|
-
<div class="fragment"><div class="line"><a name="l06230"></a><span class="lineno"> 6230</span> {</div><div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>,*<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>,*<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>,*G,*g1,*g0,*f1,*f0,*t,*e,*r;</div><div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf,topg;</div><div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>  <span class="keywordtype">int</span> comple;</div><div class="line"><a name="l06234"></a><span class="lineno"> 6234</span> </div><div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>  <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(F)) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l06238"></a><span class="lineno"> 6238</span> </div><div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l06240"></a><span class="lineno"> 6240</span> </div><div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>  <span class="comment">/* The invariant g != 0 is true on entry to this procedure and is</span></div><div class="line"><a name="l06242"></a><span class="lineno"> 6242</span> <span class="comment"> ** recursively maintained by it. Therefore it suffices to test g</span></div><div class="line"><a name="l06243"></a><span class="lineno"> 6243</span> <span class="comment"> ** against one to make sure it is not constant.</span></div><div class="line"><a name="l06244"></a><span class="lineno"> 6244</span> <span class="comment"> */</span></div><div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>  <span class="comment">/* From now on, f and g are known not to be constants. */</span></div><div class="line"><a name="l06247"></a><span class="lineno"> 6247</span> </div><div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>  comple = f != <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>  r = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,<a class="code" href="cuddInt_8c.html#acd5c75ae199f9383cf86cfa5d754faa3">Cudd_Cofactor</a>,F,g);</div><div class="line"><a name="l06250"></a><span class="lineno"> 6250</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06251"></a><span class="lineno"> 6251</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(r,comple));</div><div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>  }</div><div class="line"><a name="l06253"></a><span class="lineno"> 6253</span> </div><div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l06257"></a><span class="lineno"> 6257</span> </div><div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>  <span class="comment">/* We take the cofactors of F because we are going to rely on</span></div><div class="line"><a name="l06259"></a><span class="lineno"> 6259</span> <span class="comment"> ** the fact that the cofactors of the complement are the complements</span></div><div class="line"><a name="l06260"></a><span class="lineno"> 6260</span> <span class="comment"> ** of the cofactors to better utilize the cache. Variable comple</span></div><div class="line"><a name="l06261"></a><span class="lineno"> 6261</span> <span class="comment"> ** remembers whether we have to complement the result or not.</span></div><div class="line"><a name="l06262"></a><span class="lineno"> 6262</span> <span class="comment"> */</span></div><div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>  f1 = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); f0 = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06266"></a><span class="lineno"> 6266</span>  f1 = f0 = <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>  }</div><div class="line"><a name="l06268"></a><span class="lineno"> 6268</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l06269"></a><span class="lineno"> 6269</span>  g1 = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G); g0 = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>  <span class="keywordflow">if</span> (g != G) { g1 = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g1); g0 = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g0); }</div><div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>  g1 = g0 = g;</div><div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>  }</div><div class="line"><a name="l06274"></a><span class="lineno"> 6274</span> </div><div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>  <span class="keywordflow">if</span> (topf >= topg) {</div><div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>  <span class="keywordflow">if</span> (g0 == zero || g0 == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd)) {</div><div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>  r = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f1, g1);</div><div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g1 == zero || g1 == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd)) {</div><div class="line"><a name="l06280"></a><span class="lineno"> 6280</span>  r = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f0, g0);</div><div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>  (void) fprintf(dd-><a class="code" href="structDdManager.html#af318bea3248f8e99d7889f028be4ec8f">out</a>,</div><div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>  <span class="stringliteral">"Cudd_Cofactor: Invalid restriction 2\n"</span>);</div><div class="line"><a name="l06284"></a><span class="lineno"> 6284</span>  dd-><a class="code" href="structDdManager.html#ae0690f123fc2c3f0ca9a1cfd18923a37">errorCode</a> = <a class="code" href="cudd_8h.html#a27114b4342bc1b987f35d751eae2444ba6207864d084627c3b7ae995c0839644b">CUDD_INVALID_ARG</a>;</div><div class="line"><a name="l06285"></a><span class="lineno"> 6285</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>  }</div><div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>  } <span class="keywordflow">else</span> <span class="comment">/* if (topf < topg) */</span> {</div><div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>  t = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f1, g);</div><div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>  e = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f0, g);</div><div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd, t);</div><div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>  }</div><div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l06298"></a><span class="lineno"> 6298</span> </div><div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>  r = t;</div><div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>,t,e);</div><div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>  }</div><div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd ,e);</div><div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd ,t);</div><div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>  }</div><div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>  }</div><div class="line"><a name="l06316"></a><span class="lineno"> 6316</span> </div><div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,<a class="code" href="cuddInt_8c.html#acd5c75ae199f9383cf86cfa5d754faa3">Cudd_Cofactor</a>,F,g,r);</div><div class="line"><a name="l06318"></a><span class="lineno"> 6318</span> </div><div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(r,comple));</div><div class="line"><a name="l06320"></a><span class="lineno"> 6320</span> </div><div class="line"><a name="l06321"></a><span class="lineno"> 6321</span> } <span class="comment">/* end of cuddCofactorRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
9177
|
+
<div class="fragment"><div class="line"><a name="l06230"></a><span class="lineno"> 6230</span> {</div><div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>,*<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>,*<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>,*G,*g1,*g0,*f1,*f0,*t,*e,*r;</div><div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> topf,topg;</div><div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>  <span class="keywordtype">int</span> comple;</div><div class="line"><a name="l06234"></a><span class="lineno"> 6234</span> </div><div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>  <span class="keywordflow">if</span> (<a class="code" href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a>(F)) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l06238"></a><span class="lineno"> 6238</span> </div><div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l06240"></a><span class="lineno"> 6240</span> </div><div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>  <span class="comment">/* The invariant g != 0 is true on entry to this procedure and is</span></div><div class="line"><a name="l06242"></a><span class="lineno"> 6242</span> <span class="comment"> ** recursively maintained by it. Therefore it suffices to test g</span></div><div class="line"><a name="l06243"></a><span class="lineno"> 6243</span> <span class="comment"> ** against one to make sure it is not constant.</span></div><div class="line"><a name="l06244"></a><span class="lineno"> 6244</span> <span class="comment"> */</span></div><div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>  <span class="keywordflow">if</span> (g == one) <span class="keywordflow">return</span>(f);</div><div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>  <span class="comment">/* From now on, f and g are known not to be constants. */</span></div><div class="line"><a name="l06247"></a><span class="lineno"> 6247</span> </div><div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>  comple = f != <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>  r = <a class="code" href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a>(dd,<a class="code" href="cuddInt_8c.html#acd5c75ae199f9383cf86cfa5d754faa3">Cudd_Cofactor</a>,F,g);</div><div class="line"><a name="l06250"></a><span class="lineno"> 6250</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06251"></a><span class="lineno"> 6251</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(r,comple));</div><div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>  }</div><div class="line"><a name="l06253"></a><span class="lineno"> 6253</span> </div><div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>  G = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(g);</div><div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>  topg = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[G-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l06257"></a><span class="lineno"> 6257</span> </div><div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>  <span class="comment">/* We take the cofactors of F because we are going to rely on</span></div><div class="line"><a name="l06259"></a><span class="lineno"> 6259</span> <span class="comment"> ** the fact that the cofactors of the complement are the complements</span></div><div class="line"><a name="l06260"></a><span class="lineno"> 6260</span> <span class="comment"> ** of the cofactors to better utilize the cache. Variable comple</span></div><div class="line"><a name="l06261"></a><span class="lineno"> 6261</span> <span class="comment"> ** remembers whether we have to complement the result or not.</span></div><div class="line"><a name="l06262"></a><span class="lineno"> 6262</span> <span class="comment"> */</span></div><div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>  <span class="keywordflow">if</span> (topf <= topg) {</div><div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>  f1 = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F); f0 = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06266"></a><span class="lineno"> 6266</span>  f1 = f0 = <a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>;</div><div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>  }</div><div class="line"><a name="l06268"></a><span class="lineno"> 6268</span>  <span class="keywordflow">if</span> (topg <= topf) {</div><div class="line"><a name="l06269"></a><span class="lineno"> 6269</span>  g1 = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(G); g0 = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(G);</div><div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>  <span class="keywordflow">if</span> (g != G) { g1 = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g1); g0 = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(g0); }</div><div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>  g1 = g0 = g;</div><div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>  }</div><div class="line"><a name="l06274"></a><span class="lineno"> 6274</span> </div><div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>  <span class="keywordflow">if</span> (topf >= topg) {</div><div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>  <span class="keywordflow">if</span> (g0 == zero || g0 == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd)) {</div><div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>  r = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f1, g1);</div><div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (g1 == zero || g1 == <a class="code" href="cuddInt_8h.html#ab78870b54aa3b1ff2eb38b311e5d8a1a">DD_ZERO</a>(dd)) {</div><div class="line"><a name="l06280"></a><span class="lineno"> 6280</span>  r = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f0, g0);</div><div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>  (void) fprintf(dd-><a class="code" href="structDdManager.html#af318bea3248f8e99d7889f028be4ec8f">out</a>,</div><div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>  <span class="stringliteral">"Cudd_Cofactor: Invalid restriction 2\n"</span>);</div><div class="line"><a name="l06284"></a><span class="lineno"> 6284</span>  dd-><a class="code" href="structDdManager.html#ae0690f123fc2c3f0ca9a1cfd18923a37">errorCode</a> = <a class="code" href="cudd_8h.html#a27114b4342bc1b987f35d751eae2444ba6207864d084627c3b7ae995c0839644b">CUDD_INVALID_ARG</a>;</div><div class="line"><a name="l06285"></a><span class="lineno"> 6285</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>  }</div><div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>  } <span class="keywordflow">else</span> <span class="comment">/* if (topf < topg) */</span> {</div><div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>  t = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f1, g);</div><div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>  e = <a class="code" href="cuddInt_8c.html#a18cb115a0f1d45b085e71537119accec">cuddCofactorRecur</a>(dd, f0, g);</div><div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd, t);</div><div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>  }</div><div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l06298"></a><span class="lineno"> 6298</span> </div><div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>  r = t;</div><div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>,<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t),<a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(e));</div><div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>  <span class="keywordflow">if</span> (r != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>)</div><div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>  r = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(r);</div><div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>  r = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd,(<span class="keywordtype">int</span>)F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>,t,e);</div><div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>  }</div><div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>  <span class="keywordflow">if</span> (r == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd ,e);</div><div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>  <a class="code" href="cuddInt_8c.html#a0944d022761660bf481167b78759f599">Cudd_RecursiveDeref</a>(dd ,t);</div><div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>  }</div><div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>  }</div><div class="line"><a name="l06316"></a><span class="lineno"> 6316</span> </div><div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>  <a class="code" href="cuddInt_8c.html#acf6d1175a8da1a1613910bac913fee58">cuddCacheInsert2</a>(dd,<a class="code" href="cuddInt_8c.html#acd5c75ae199f9383cf86cfa5d754faa3">Cudd_Cofactor</a>,F,g,r);</div><div class="line"><a name="l06318"></a><span class="lineno"> 6318</span> </div><div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a>(r,comple));</div><div class="line"><a name="l06320"></a><span class="lineno"> 6320</span> </div><div class="line"><a name="l06321"></a><span class="lineno"> 6321</span> } <span class="comment">/* end of cuddCofactorRecur */</span></div><div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
9178
9178
|
<div class="ttc" id="cuddInt_8h_html_ab274a54f55f018beea73ed6f1bc630c2"><div class="ttname"><a href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a></div><div class="ttdeci">#define cuddDeref(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00594">cuddInt.h:594</a></div></div>
|
|
9179
9179
|
<div class="ttc" id="cuddInt_8c_html_a767e31fbbfdbddc623396dde86249497"><div class="ttname"><a href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a></div><div class="ttdeci">DdNode * cuddUniqueInter(DdManager *unique, int index, DdNode *T, DdNode *E)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l20495">cuddInt.c:20495</a></div></div>
|
|
9180
9180
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
@@ -9190,8 +9190,8 @@ Symmetric Sifting </li>
|
|
|
9190
9190
|
<div class="ttc" id="cuddInt_8c_html_ab4f89447f0f0892337a1d6ff4c533933"><div class="ttname"><a href="cuddInt_8c.html#ab4f89447f0f0892337a1d6ff4c533933">cuddCacheLookup2</a></div><div class="ttdeci">DdNode * cuddCacheLookup2(DdManager *table, DD_CTFP op, DdNode *f, DdNode *g)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04537">cuddInt.c:4537</a></div></div>
|
|
9191
9191
|
<div class="ttc" id="cuddInt_8h_html_aa5cad999b2a4a3dbbfe5c1da1d8bc028"><div class="ttname"><a href="cuddInt_8h.html#aa5cad999b2a4a3dbbfe5c1da1d8bc028">cuddIsConstant</a></div><div class="ttdeci">#define cuddIsConstant(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00610">cuddInt.h:610</a></div></div>
|
|
9192
9192
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
9193
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
9194
9193
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
9194
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
9195
9195
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
9196
9196
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
9197
9197
|
<div class="ttc" id="cudd_8h_html_ae870da95e89a703e939161fe08b899f9"><div class="ttname"><a href="cudd_8h.html#ae870da95e89a703e939161fe08b899f9">Cudd_NotCond</a></div><div class="ttdeci">#define Cudd_NotCond(node, c)</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00368">cudd.h:368</a></div></div>
|
|
@@ -16656,7 +16656,7 @@ Repeat 1-4 until no further improvement. </li>
|
|
|
16656
16656
|
<p>There are three major terminal cases in theory: ub -> f : return ub lb == f : return lb not(lb -> f): return zero Only the second case can be checked exactly in constant time. For the others, we check for sufficient conditions.</p>
|
|
16657
16657
|
|
|
16658
16658
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l17521">17521</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
16659
|
-
<div class="fragment"><div class="line"><a name="l17526"></a><span class="lineno">17526</span>  {</div><div class="line"><a name="l17527"></a><span class="lineno">17527</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *lbv, *lbvn, *lbnx, *ubv, *ubvn, *fv, *fvn, *res;</div><div class="line"><a name="l17528"></a><span class="lineno">17528</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>, *UB, *LB, *t, *e;</div><div class="line"><a name="l17529"></a><span class="lineno">17529</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> top, toplb, topub, topf, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l17530"></a><span class="lineno">17530</span> </div><div class="line"><a name="l17531"></a><span class="lineno">17531</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l17532"></a><span class="lineno">17532</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l17533"></a><span class="lineno">17533</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l17534"></a><span class="lineno">17534</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l17535"></a><span class="lineno">17535</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ub != zero && lb != zero);</div><div class="line"><a name="l17543"></a><span class="lineno">17543</span>  <span class="keywordflow">if</span> (ub == f || f == one) <span class="keywordflow">return</span>(ub);</div><div class="line"><a name="l17544"></a><span class="lineno">17544</span>  <span class="keywordflow">if</span> (lb == f) <span class="keywordflow">return</span>(lb);</div><div class="line"><a name="l17545"></a><span class="lineno">17545</span>  <span class="keywordflow">if</span> (f == zero || ub == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f) || lb == one || lb == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f))</div><div class="line"><a name="l17546"></a><span class="lineno">17546</span>  <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l17547"></a><span class="lineno">17547</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(lb) && <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l17548"></a><span class="lineno">17548</span> </div><div class="line"><a name="l17549"></a><span class="lineno">17549</span>  <span class="comment">/* Here lb and f are not constant. */</span></div><div class="line"><a name="l17550"></a><span class="lineno">17550</span> </div><div class="line"><a name="l17551"></a><span class="lineno">17551</span>  <span class="comment">/* Check cache. Since lb and ub are cubes, their local reference counts</span></div><div class="line"><a name="l17552"></a><span class="lineno">17552</span> <span class="comment"> ** are always 1. Hence, we only check the reference count of f.</span></div><div class="line"><a name="l17553"></a><span class="lineno">17553</span> <span class="comment"> */</span></div><div class="line"><a name="l17554"></a><span class="lineno">17554</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l17555"></a><span class="lineno">17555</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l17556"></a><span class="lineno">17556</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd, <a class="code" href="cuddInt_8h.html#aa18bf365207a609fdc3cf738331acd84">DD_BDD_MAX_EXP_TAG</a>, lb, ub, f);</div><div class="line"><a name="l17557"></a><span class="lineno">17557</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17558"></a><span class="lineno">17558</span>  <span class="keywordflow">return</span>(tmp);</div><div class="line"><a name="l17559"></a><span class="lineno">17559</span>  }</div><div class="line"><a name="l17560"></a><span class="lineno">17560</span>  }</div><div class="line"><a name="l17561"></a><span class="lineno">17561</span> </div><div class="line"><a name="l17562"></a><span class="lineno">17562</span>  <span class="comment">/* Compute cofactors. For lb we use the non-zero one in</span></div><div class="line"><a name="l17563"></a><span class="lineno">17563</span> <span class="comment"> ** both branches of the recursion.</span></div><div class="line"><a name="l17564"></a><span class="lineno">17564</span> <span class="comment"> */</span></div><div class="line"><a name="l17565"></a><span class="lineno">17565</span>  LB = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(lb);</div><div class="line"><a name="l17566"></a><span class="lineno">17566</span>  UB = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(ub);</div><div class="line"><a name="l17567"></a><span class="lineno">17567</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17568"></a><span class="lineno">17568</span>  toplb = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[LB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17569"></a><span class="lineno">17569</span>  topub = (ub == <a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>) ? <a class="code" href="cudd_8h.html#aa097684bc69c58891332b245d577b986">CUDD_CONST_INDEX</a> : dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[UB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17570"></a><span class="lineno">17570</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(toplb <= topub);</div><div class="line"><a name="l17571"></a><span class="lineno">17571</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(topf,toplb);</div><div class="line"><a name="l17572"></a><span class="lineno">17572</span>  <span class="keywordflow">if</span> (toplb == top) {</div><div class="line"><a name="l17573"></a><span class="lineno">17573</span>  index = LB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l17574"></a><span class="lineno">17574</span>  lbv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(LB);</div><div class="line"><a name="l17575"></a><span class="lineno">17575</span>  lbvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(LB);</div><div class="line"><a name="l17576"></a><span class="lineno">17576</span>  <span class="keywordflow">if</span> (lb != LB) {</div><div class="line"><a name="l17577"></a><span class="lineno">17577</span>  lbv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lbv);</div><div class="line"><a name="l17578"></a><span class="lineno">17578</span>  lbvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lbvn);</div><div class="line"><a name="l17579"></a><span class="lineno">17579</span>  }</div><div class="line"><a name="l17580"></a><span class="lineno">17580</span>  <span class="keywordflow">if</span> (lbv == zero) {</div><div class="line"><a name="l17581"></a><span class="lineno">17581</span>  lbnx = lbvn;</div><div class="line"><a name="l17582"></a><span class="lineno">17582</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17583"></a><span class="lineno">17583</span>  lbnx = lbv;</div><div class="line"><a name="l17584"></a><span class="lineno">17584</span>  }</div><div class="line"><a name="l17585"></a><span class="lineno">17585</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17586"></a><span class="lineno">17586</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l17587"></a><span class="lineno">17587</span>  lbnx = lbv = lbvn = lb;</div><div class="line"><a name="l17588"></a><span class="lineno">17588</span>  }</div><div class="line"><a name="l17589"></a><span class="lineno">17589</span>  <span class="keywordflow">if</span> (topub == top) {</div><div class="line"><a name="l17590"></a><span class="lineno">17590</span>  ubv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(UB);</div><div class="line"><a name="l17591"></a><span class="lineno">17591</span>  ubvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(UB);</div><div class="line"><a name="l17592"></a><span class="lineno">17592</span>  <span class="keywordflow">if</span> (ub != UB) {</div><div class="line"><a name="l17593"></a><span class="lineno">17593</span>  ubv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(ubv);</div><div class="line"><a name="l17594"></a><span class="lineno">17594</span>  ubvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(ubvn);</div><div class="line"><a name="l17595"></a><span class="lineno">17595</span>  }</div><div class="line"><a name="l17596"></a><span class="lineno">17596</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17597"></a><span class="lineno">17597</span>  ubv = ubvn = ub;</div><div class="line"><a name="l17598"></a><span class="lineno">17598</span>  }</div><div class="line"><a name="l17599"></a><span class="lineno">17599</span>  <span class="keywordflow">if</span> (topf == top) {</div><div class="line"><a name="l17600"></a><span class="lineno">17600</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l17601"></a><span class="lineno">17601</span>  fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l17602"></a><span class="lineno">17602</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l17603"></a><span class="lineno">17603</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l17604"></a><span class="lineno">17604</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l17605"></a><span class="lineno">17605</span>  }</div><div class="line"><a name="l17606"></a><span class="lineno">17606</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17607"></a><span class="lineno">17607</span>  fv = fvn = f;</div><div class="line"><a name="l17608"></a><span class="lineno">17608</span>  }</div><div class="line"><a name="l17609"></a><span class="lineno">17609</span> </div><div class="line"><a name="l17610"></a><span class="lineno">17610</span>  <span class="comment">/* Recursive calls. */</span></div><div class="line"><a name="l17611"></a><span class="lineno">17611</span>  <span class="keywordflow">if</span> (ubv != zero) {</div><div class="line"><a name="l17612"></a><span class="lineno">17612</span>  t = <a class="code" href="cuddInt_8c.html#a4234aacbccc17b321b44725b3d83e70e">ddBddMaximallyExpand</a>(dd, lbnx, ubv, fv);</div><div class="line"><a name="l17613"></a><span class="lineno">17613</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17614"></a><span class="lineno">17614</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17615"></a><span class="lineno">17615</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(topub == toplb && topub == top && lbv == zero);</div><div class="line"><a name="l17616"></a><span class="lineno">17616</span>  t = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l17617"></a><span class="lineno">17617</span>  }</div><div class="line"><a name="l17618"></a><span class="lineno">17618</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l17619"></a><span class="lineno">17619</span> </div><div class="line"><a name="l17620"></a><span class="lineno">17620</span>  <span class="comment">/* If the top variable appears only in lb, the positive and negative</span></div><div class="line"><a name="l17621"></a><span class="lineno">17621</span> <span class="comment"> ** cofactors of each operand are the same. We want to avoid a</span></div><div class="line"><a name="l17622"></a><span class="lineno">17622</span> <span class="comment"> ** needless recursive call, which would force us to give up the</span></div><div class="line"><a name="l17623"></a><span class="lineno">17623</span> <span class="comment"> ** cache optimization trick based on reference counts.</span></div><div class="line"><a name="l17624"></a><span class="lineno">17624</span> <span class="comment"> */</span></div><div class="line"><a name="l17625"></a><span class="lineno">17625</span>  <span class="keywordflow">if</span> (ubv == ubvn && fv == fvn) {</div><div class="line"><a name="l17626"></a><span class="lineno">17626</span>  res = t;</div><div class="line"><a name="l17627"></a><span class="lineno">17627</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17628"></a><span class="lineno">17628</span>  <span class="keywordflow">if</span> (ubvn != zero) {</div><div class="line"><a name="l17629"></a><span class="lineno">17629</span>  e = <a class="code" href="cuddInt_8c.html#a4234aacbccc17b321b44725b3d83e70e">ddBddMaximallyExpand</a>(dd, lbnx, ubvn, fvn);</div><div class="line"><a name="l17630"></a><span class="lineno">17630</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17631"></a><span class="lineno">17631</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17632"></a><span class="lineno">17632</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17633"></a><span class="lineno">17633</span>  }</div><div class="line"><a name="l17634"></a><span class="lineno">17634</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17635"></a><span class="lineno">17635</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(topub == toplb && topub == top && lbvn == zero);</div><div class="line"><a name="l17636"></a><span class="lineno">17636</span>  e = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l17637"></a><span class="lineno">17637</span>  }</div><div class="line"><a name="l17638"></a><span class="lineno">17638</span> </div><div class="line"><a name="l17639"></a><span class="lineno">17639</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l17640"></a><span class="lineno">17640</span>  res = t;</div><div class="line"><a name="l17641"></a><span class="lineno">17641</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17642"></a><span class="lineno">17642</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l17643"></a><span class="lineno">17643</span> </div><div class="line"><a name="l17644"></a><span class="lineno">17644</span>  <span class="keywordflow">if</span> (toplb == top) {</div><div class="line"><a name="l17645"></a><span class="lineno">17645</span>  <span class="keywordflow">if</span> (lbv == zero) {</div><div class="line"><a name="l17646"></a><span class="lineno">17646</span>  <span class="comment">/* Top variable appears in negative phase. */</span></div><div class="line"><a name="l17647"></a><span class="lineno">17647</span>  <span class="keywordflow">if</span> (t != one) {</div><div class="line"><a name="l17648"></a><span class="lineno">17648</span>  <a class="code" href="structDdNode.html">DdNode</a> *newT;</div><div class="line"><a name="l17649"></a><span class="lineno">17649</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l17650"></a><span class="lineno">17650</span>  newT = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t), zero);</div><div class="line"><a name="l17651"></a><span class="lineno">17651</span>  <span class="keywordflow">if</span> (newT == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17652"></a><span class="lineno">17652</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17653"></a><span class="lineno">17653</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17654"></a><span class="lineno">17654</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17655"></a><span class="lineno">17655</span>  }</div><div class="line"><a name="l17656"></a><span class="lineno">17656</span>  newT = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(newT);</div><div class="line"><a name="l17657"></a><span class="lineno">17657</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17658"></a><span class="lineno">17658</span>  newT = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, t, one);</div><div class="line"><a name="l17659"></a><span class="lineno">17659</span>  <span class="keywordflow">if</span> (newT == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17660"></a><span class="lineno">17660</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17661"></a><span class="lineno">17661</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17662"></a><span class="lineno">17662</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17663"></a><span class="lineno">17663</span>  }</div><div class="line"><a name="l17664"></a><span class="lineno">17664</span>  }</div><div class="line"><a name="l17665"></a><span class="lineno">17665</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(newT);</div><div class="line"><a name="l17666"></a><span class="lineno">17666</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l17667"></a><span class="lineno">17667</span>  t = newT;</div><div class="line"><a name="l17668"></a><span class="lineno">17668</span>  }</div><div class="line"><a name="l17669"></a><span class="lineno">17669</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lbvn == zero) {</div><div class="line"><a name="l17670"></a><span class="lineno">17670</span>  <span class="comment">/* Top variable appears in positive phase. */</span></div><div class="line"><a name="l17671"></a><span class="lineno">17671</span>  <span class="keywordflow">if</span> (e != one) {</div><div class="line"><a name="l17672"></a><span class="lineno">17672</span>  <a class="code" href="structDdNode.html">DdNode</a> *newE;</div><div class="line"><a name="l17673"></a><span class="lineno">17673</span>  newE = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, one, e);</div><div class="line"><a name="l17674"></a><span class="lineno">17674</span>  <span class="keywordflow">if</span> (newE == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17675"></a><span class="lineno">17675</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17676"></a><span class="lineno">17676</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17677"></a><span class="lineno">17677</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17678"></a><span class="lineno">17678</span>  }</div><div class="line"><a name="l17679"></a><span class="lineno">17679</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(newE);</div><div class="line"><a name="l17680"></a><span class="lineno">17680</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l17681"></a><span class="lineno">17681</span>  e = newE;</div><div class="line"><a name="l17682"></a><span class="lineno">17682</span>  }</div><div class="line"><a name="l17683"></a><span class="lineno">17683</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17684"></a><span class="lineno">17684</span>  <span class="comment">/* Not a cube. */</span></div><div class="line"><a name="l17685"></a><span class="lineno">17685</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17686"></a><span class="lineno">17686</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17687"></a><span class="lineno">17687</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17688"></a><span class="lineno">17688</span>  }</div><div class="line"><a name="l17689"></a><span class="lineno">17689</span>  }</div><div class="line"><a name="l17690"></a><span class="lineno">17690</span> </div><div class="line"><a name="l17691"></a><span class="lineno">17691</span>  <span class="comment">/* Combine results. */</span></div><div class="line"><a name="l17692"></a><span class="lineno">17692</span>  res = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(dd, t, e);</div><div class="line"><a name="l17693"></a><span class="lineno">17693</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17694"></a><span class="lineno">17694</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17695"></a><span class="lineno">17695</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17696"></a><span class="lineno">17696</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17697"></a><span class="lineno">17697</span>  }</div><div class="line"><a name="l17698"></a><span class="lineno">17698</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res);</div><div class="line"><a name="l17699"></a><span class="lineno">17699</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17700"></a><span class="lineno">17700</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17701"></a><span class="lineno">17701</span>  }</div><div class="line"><a name="l17702"></a><span class="lineno">17702</span>  }</div><div class="line"><a name="l17703"></a><span class="lineno">17703</span> </div><div class="line"><a name="l17704"></a><span class="lineno">17704</span>  <span class="comment">/* Cache result and return. */</span></div><div class="line"><a name="l17705"></a><span class="lineno">17705</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l17706"></a><span class="lineno">17706</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd, <a class="code" href="cuddInt_8h.html#aa18bf365207a609fdc3cf738331acd84">DD_BDD_MAX_EXP_TAG</a>, lb, ub, f, res);</div><div class="line"><a name="l17707"></a><span class="lineno">17707</span>  }</div><div class="line"><a name="l17708"></a><span class="lineno">17708</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res);</div><div class="line"><a name="l17709"></a><span class="lineno">17709</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l17710"></a><span class="lineno">17710</span> </div><div class="line"><a name="l17711"></a><span class="lineno">17711</span>  } <span class="comment">/* end of ddBddMaximallyExpand */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
16659
|
+
<div class="fragment"><div class="line"><a name="l17526"></a><span class="lineno">17526</span>  {</div><div class="line"><a name="l17527"></a><span class="lineno">17527</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>, *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>, *lbv, *lbvn, *lbnx, *ubv, *ubvn, *fv, *fvn, *res;</div><div class="line"><a name="l17528"></a><span class="lineno">17528</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *UB, *LB, *t, *e;</div><div class="line"><a name="l17529"></a><span class="lineno">17529</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> top, toplb, topub, topf, <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>;</div><div class="line"><a name="l17530"></a><span class="lineno">17530</span> </div><div class="line"><a name="l17531"></a><span class="lineno">17531</span>  <a class="code" href="cuddInt_8h.html#a94289b59164b0be08fdb041e6f847fd4">statLine</a>(dd);</div><div class="line"><a name="l17532"></a><span class="lineno">17532</span>  <span class="comment">/* Terminal cases. */</span></div><div class="line"><a name="l17533"></a><span class="lineno">17533</span>  one = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l17534"></a><span class="lineno">17534</span>  zero = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l17535"></a><span class="lineno">17535</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(ub != zero && lb != zero);</div><div class="line"><a name="l17543"></a><span class="lineno">17543</span>  <span class="keywordflow">if</span> (ub == f || f == one) <span class="keywordflow">return</span>(ub);</div><div class="line"><a name="l17544"></a><span class="lineno">17544</span>  <span class="keywordflow">if</span> (lb == f) <span class="keywordflow">return</span>(lb);</div><div class="line"><a name="l17545"></a><span class="lineno">17545</span>  <span class="keywordflow">if</span> (f == zero || ub == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f) || lb == one || lb == <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(f))</div><div class="line"><a name="l17546"></a><span class="lineno">17546</span>  <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l17547"></a><span class="lineno">17547</span>  <span class="keywordflow">if</span> (!<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(lb) && <a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(f)) <span class="keywordflow">return</span>(zero);</div><div class="line"><a name="l17548"></a><span class="lineno">17548</span> </div><div class="line"><a name="l17549"></a><span class="lineno">17549</span>  <span class="comment">/* Here lb and f are not constant. */</span></div><div class="line"><a name="l17550"></a><span class="lineno">17550</span> </div><div class="line"><a name="l17551"></a><span class="lineno">17551</span>  <span class="comment">/* Check cache. Since lb and ub are cubes, their local reference counts</span></div><div class="line"><a name="l17552"></a><span class="lineno">17552</span> <span class="comment"> ** are always 1. Hence, we only check the reference count of f.</span></div><div class="line"><a name="l17553"></a><span class="lineno">17553</span> <span class="comment"> */</span></div><div class="line"><a name="l17554"></a><span class="lineno">17554</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l17555"></a><span class="lineno">17555</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l17556"></a><span class="lineno">17556</span>  <a class="code" href="structDdNode.html">DdNode</a> *tmp = <a class="code" href="cuddInt_8c.html#ab2e7f6c2eabfb9af8ed7e52dcc00a678">cuddCacheLookup</a>(dd, <a class="code" href="cuddInt_8h.html#aa18bf365207a609fdc3cf738331acd84">DD_BDD_MAX_EXP_TAG</a>, lb, ub, f);</div><div class="line"><a name="l17557"></a><span class="lineno">17557</span>  <span class="keywordflow">if</span> (tmp != <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17558"></a><span class="lineno">17558</span>  <span class="keywordflow">return</span>(tmp);</div><div class="line"><a name="l17559"></a><span class="lineno">17559</span>  }</div><div class="line"><a name="l17560"></a><span class="lineno">17560</span>  }</div><div class="line"><a name="l17561"></a><span class="lineno">17561</span> </div><div class="line"><a name="l17562"></a><span class="lineno">17562</span>  <span class="comment">/* Compute cofactors. For lb we use the non-zero one in</span></div><div class="line"><a name="l17563"></a><span class="lineno">17563</span> <span class="comment"> ** both branches of the recursion.</span></div><div class="line"><a name="l17564"></a><span class="lineno">17564</span> <span class="comment"> */</span></div><div class="line"><a name="l17565"></a><span class="lineno">17565</span>  LB = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(lb);</div><div class="line"><a name="l17566"></a><span class="lineno">17566</span>  UB = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(ub);</div><div class="line"><a name="l17567"></a><span class="lineno">17567</span>  topf = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17568"></a><span class="lineno">17568</span>  toplb = dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[LB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17569"></a><span class="lineno">17569</span>  topub = (ub == <a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a>) ? <a class="code" href="cudd_8h.html#aa097684bc69c58891332b245d577b986">CUDD_CONST_INDEX</a> : dd-><a class="code" href="structDdManager.html#a299d281a98c60aeec0e8edf6671a0f51">perm</a>[UB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17570"></a><span class="lineno">17570</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(toplb <= topub);</div><div class="line"><a name="l17571"></a><span class="lineno">17571</span>  top = <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(topf,toplb);</div><div class="line"><a name="l17572"></a><span class="lineno">17572</span>  <span class="keywordflow">if</span> (toplb == top) {</div><div class="line"><a name="l17573"></a><span class="lineno">17573</span>  index = LB-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l17574"></a><span class="lineno">17574</span>  lbv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(LB);</div><div class="line"><a name="l17575"></a><span class="lineno">17575</span>  lbvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(LB);</div><div class="line"><a name="l17576"></a><span class="lineno">17576</span>  <span class="keywordflow">if</span> (lb != LB) {</div><div class="line"><a name="l17577"></a><span class="lineno">17577</span>  lbv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lbv);</div><div class="line"><a name="l17578"></a><span class="lineno">17578</span>  lbvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(lbvn);</div><div class="line"><a name="l17579"></a><span class="lineno">17579</span>  }</div><div class="line"><a name="l17580"></a><span class="lineno">17580</span>  <span class="keywordflow">if</span> (lbv == zero) {</div><div class="line"><a name="l17581"></a><span class="lineno">17581</span>  lbnx = lbvn;</div><div class="line"><a name="l17582"></a><span class="lineno">17582</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17583"></a><span class="lineno">17583</span>  lbnx = lbv;</div><div class="line"><a name="l17584"></a><span class="lineno">17584</span>  }</div><div class="line"><a name="l17585"></a><span class="lineno">17585</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17586"></a><span class="lineno">17586</span>  index = F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>;</div><div class="line"><a name="l17587"></a><span class="lineno">17587</span>  lbnx = lbv = lbvn = lb;</div><div class="line"><a name="l17588"></a><span class="lineno">17588</span>  }</div><div class="line"><a name="l17589"></a><span class="lineno">17589</span>  <span class="keywordflow">if</span> (topub == top) {</div><div class="line"><a name="l17590"></a><span class="lineno">17590</span>  ubv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(UB);</div><div class="line"><a name="l17591"></a><span class="lineno">17591</span>  ubvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(UB);</div><div class="line"><a name="l17592"></a><span class="lineno">17592</span>  <span class="keywordflow">if</span> (ub != UB) {</div><div class="line"><a name="l17593"></a><span class="lineno">17593</span>  ubv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(ubv);</div><div class="line"><a name="l17594"></a><span class="lineno">17594</span>  ubvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(ubvn);</div><div class="line"><a name="l17595"></a><span class="lineno">17595</span>  }</div><div class="line"><a name="l17596"></a><span class="lineno">17596</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17597"></a><span class="lineno">17597</span>  ubv = ubvn = ub;</div><div class="line"><a name="l17598"></a><span class="lineno">17598</span>  }</div><div class="line"><a name="l17599"></a><span class="lineno">17599</span>  <span class="keywordflow">if</span> (topf == top) {</div><div class="line"><a name="l17600"></a><span class="lineno">17600</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l17601"></a><span class="lineno">17601</span>  fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l17602"></a><span class="lineno">17602</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l17603"></a><span class="lineno">17603</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l17604"></a><span class="lineno">17604</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l17605"></a><span class="lineno">17605</span>  }</div><div class="line"><a name="l17606"></a><span class="lineno">17606</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17607"></a><span class="lineno">17607</span>  fv = fvn = f;</div><div class="line"><a name="l17608"></a><span class="lineno">17608</span>  }</div><div class="line"><a name="l17609"></a><span class="lineno">17609</span> </div><div class="line"><a name="l17610"></a><span class="lineno">17610</span>  <span class="comment">/* Recursive calls. */</span></div><div class="line"><a name="l17611"></a><span class="lineno">17611</span>  <span class="keywordflow">if</span> (ubv != zero) {</div><div class="line"><a name="l17612"></a><span class="lineno">17612</span>  t = <a class="code" href="cuddInt_8c.html#a4234aacbccc17b321b44725b3d83e70e">ddBddMaximallyExpand</a>(dd, lbnx, ubv, fv);</div><div class="line"><a name="l17613"></a><span class="lineno">17613</span>  <span class="keywordflow">if</span> (t == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17614"></a><span class="lineno">17614</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17615"></a><span class="lineno">17615</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(topub == toplb && topub == top && lbv == zero);</div><div class="line"><a name="l17616"></a><span class="lineno">17616</span>  t = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l17617"></a><span class="lineno">17617</span>  }</div><div class="line"><a name="l17618"></a><span class="lineno">17618</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(t);</div><div class="line"><a name="l17619"></a><span class="lineno">17619</span> </div><div class="line"><a name="l17620"></a><span class="lineno">17620</span>  <span class="comment">/* If the top variable appears only in lb, the positive and negative</span></div><div class="line"><a name="l17621"></a><span class="lineno">17621</span> <span class="comment"> ** cofactors of each operand are the same. We want to avoid a</span></div><div class="line"><a name="l17622"></a><span class="lineno">17622</span> <span class="comment"> ** needless recursive call, which would force us to give up the</span></div><div class="line"><a name="l17623"></a><span class="lineno">17623</span> <span class="comment"> ** cache optimization trick based on reference counts.</span></div><div class="line"><a name="l17624"></a><span class="lineno">17624</span> <span class="comment"> */</span></div><div class="line"><a name="l17625"></a><span class="lineno">17625</span>  <span class="keywordflow">if</span> (ubv == ubvn && fv == fvn) {</div><div class="line"><a name="l17626"></a><span class="lineno">17626</span>  res = t;</div><div class="line"><a name="l17627"></a><span class="lineno">17627</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17628"></a><span class="lineno">17628</span>  <span class="keywordflow">if</span> (ubvn != zero) {</div><div class="line"><a name="l17629"></a><span class="lineno">17629</span>  e = <a class="code" href="cuddInt_8c.html#a4234aacbccc17b321b44725b3d83e70e">ddBddMaximallyExpand</a>(dd, lbnx, ubvn, fvn);</div><div class="line"><a name="l17630"></a><span class="lineno">17630</span>  <span class="keywordflow">if</span> (e == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17631"></a><span class="lineno">17631</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17632"></a><span class="lineno">17632</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17633"></a><span class="lineno">17633</span>  }</div><div class="line"><a name="l17634"></a><span class="lineno">17634</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17635"></a><span class="lineno">17635</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(topub == toplb && topub == top && lbvn == zero);</div><div class="line"><a name="l17636"></a><span class="lineno">17636</span>  e = <a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a>;</div><div class="line"><a name="l17637"></a><span class="lineno">17637</span>  }</div><div class="line"><a name="l17638"></a><span class="lineno">17638</span> </div><div class="line"><a name="l17639"></a><span class="lineno">17639</span>  <span class="keywordflow">if</span> (t == e) {</div><div class="line"><a name="l17640"></a><span class="lineno">17640</span>  res = t;</div><div class="line"><a name="l17641"></a><span class="lineno">17641</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17642"></a><span class="lineno">17642</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(e);</div><div class="line"><a name="l17643"></a><span class="lineno">17643</span> </div><div class="line"><a name="l17644"></a><span class="lineno">17644</span>  <span class="keywordflow">if</span> (toplb == top) {</div><div class="line"><a name="l17645"></a><span class="lineno">17645</span>  <span class="keywordflow">if</span> (lbv == zero) {</div><div class="line"><a name="l17646"></a><span class="lineno">17646</span>  <span class="comment">/* Top variable appears in negative phase. */</span></div><div class="line"><a name="l17647"></a><span class="lineno">17647</span>  <span class="keywordflow">if</span> (t != one) {</div><div class="line"><a name="l17648"></a><span class="lineno">17648</span>  <a class="code" href="structDdNode.html">DdNode</a> *newT;</div><div class="line"><a name="l17649"></a><span class="lineno">17649</span>  <span class="keywordflow">if</span> (<a class="code" href="cudd_8h.html#a35322518c24f65f44eda9623083cb62c">Cudd_IsComplement</a>(t)) {</div><div class="line"><a name="l17650"></a><span class="lineno">17650</span>  newT = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(t), zero);</div><div class="line"><a name="l17651"></a><span class="lineno">17651</span>  <span class="keywordflow">if</span> (newT == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17652"></a><span class="lineno">17652</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17653"></a><span class="lineno">17653</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17654"></a><span class="lineno">17654</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17655"></a><span class="lineno">17655</span>  }</div><div class="line"><a name="l17656"></a><span class="lineno">17656</span>  newT = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(newT);</div><div class="line"><a name="l17657"></a><span class="lineno">17657</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17658"></a><span class="lineno">17658</span>  newT = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, t, one);</div><div class="line"><a name="l17659"></a><span class="lineno">17659</span>  <span class="keywordflow">if</span> (newT == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17660"></a><span class="lineno">17660</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17661"></a><span class="lineno">17661</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17662"></a><span class="lineno">17662</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17663"></a><span class="lineno">17663</span>  }</div><div class="line"><a name="l17664"></a><span class="lineno">17664</span>  }</div><div class="line"><a name="l17665"></a><span class="lineno">17665</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(newT);</div><div class="line"><a name="l17666"></a><span class="lineno">17666</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(t);</div><div class="line"><a name="l17667"></a><span class="lineno">17667</span>  t = newT;</div><div class="line"><a name="l17668"></a><span class="lineno">17668</span>  }</div><div class="line"><a name="l17669"></a><span class="lineno">17669</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lbvn == zero) {</div><div class="line"><a name="l17670"></a><span class="lineno">17670</span>  <span class="comment">/* Top variable appears in positive phase. */</span></div><div class="line"><a name="l17671"></a><span class="lineno">17671</span>  <span class="keywordflow">if</span> (e != one) {</div><div class="line"><a name="l17672"></a><span class="lineno">17672</span>  <a class="code" href="structDdNode.html">DdNode</a> *newE;</div><div class="line"><a name="l17673"></a><span class="lineno">17673</span>  newE = <a class="code" href="cuddInt_8c.html#a767e31fbbfdbddc623396dde86249497">cuddUniqueInter</a>(dd, index, one, e);</div><div class="line"><a name="l17674"></a><span class="lineno">17674</span>  <span class="keywordflow">if</span> (newE == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17675"></a><span class="lineno">17675</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17676"></a><span class="lineno">17676</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17677"></a><span class="lineno">17677</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17678"></a><span class="lineno">17678</span>  }</div><div class="line"><a name="l17679"></a><span class="lineno">17679</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(newE);</div><div class="line"><a name="l17680"></a><span class="lineno">17680</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(e);</div><div class="line"><a name="l17681"></a><span class="lineno">17681</span>  e = newE;</div><div class="line"><a name="l17682"></a><span class="lineno">17682</span>  }</div><div class="line"><a name="l17683"></a><span class="lineno">17683</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17684"></a><span class="lineno">17684</span>  <span class="comment">/* Not a cube. */</span></div><div class="line"><a name="l17685"></a><span class="lineno">17685</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17686"></a><span class="lineno">17686</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17687"></a><span class="lineno">17687</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17688"></a><span class="lineno">17688</span>  }</div><div class="line"><a name="l17689"></a><span class="lineno">17689</span>  }</div><div class="line"><a name="l17690"></a><span class="lineno">17690</span> </div><div class="line"><a name="l17691"></a><span class="lineno">17691</span>  <span class="comment">/* Combine results. */</span></div><div class="line"><a name="l17692"></a><span class="lineno">17692</span>  res = <a class="code" href="cuddInt_8c.html#a1766cd8bf8b2ec57ade0db1a461e352b">cuddBddAndRecur</a>(dd, t, e);</div><div class="line"><a name="l17693"></a><span class="lineno">17693</span>  <span class="keywordflow">if</span> (res == <a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>) {</div><div class="line"><a name="l17694"></a><span class="lineno">17694</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17695"></a><span class="lineno">17695</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17696"></a><span class="lineno">17696</span>  <span class="keywordflow">return</span>(<a class="code" href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a>);</div><div class="line"><a name="l17697"></a><span class="lineno">17697</span>  }</div><div class="line"><a name="l17698"></a><span class="lineno">17698</span>  <a class="code" href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a>(res);</div><div class="line"><a name="l17699"></a><span class="lineno">17699</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,t);</div><div class="line"><a name="l17700"></a><span class="lineno">17700</span>  <a class="code" href="cuddInt_8c.html#a15905d5750b5f2f948329ce0f67a0fc8">Cudd_IterDerefBdd</a>(dd,e);</div><div class="line"><a name="l17701"></a><span class="lineno">17701</span>  }</div><div class="line"><a name="l17702"></a><span class="lineno">17702</span>  }</div><div class="line"><a name="l17703"></a><span class="lineno">17703</span> </div><div class="line"><a name="l17704"></a><span class="lineno">17704</span>  <span class="comment">/* Cache result and return. */</span></div><div class="line"><a name="l17705"></a><span class="lineno">17705</span>  <span class="keywordflow">if</span> (F-><a class="code" href="structDdNode.html#a530470565dbead9303a714e120c35b70">ref</a> != 1) {</div><div class="line"><a name="l17706"></a><span class="lineno">17706</span>  <a class="code" href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a>(dd, <a class="code" href="cuddInt_8h.html#aa18bf365207a609fdc3cf738331acd84">DD_BDD_MAX_EXP_TAG</a>, lb, ub, f, res);</div><div class="line"><a name="l17707"></a><span class="lineno">17707</span>  }</div><div class="line"><a name="l17708"></a><span class="lineno">17708</span>  <a class="code" href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a>(res);</div><div class="line"><a name="l17709"></a><span class="lineno">17709</span>  <span class="keywordflow">return</span>(res);</div><div class="line"><a name="l17710"></a><span class="lineno">17710</span> </div><div class="line"><a name="l17711"></a><span class="lineno">17711</span>  } <span class="comment">/* end of ddBddMaximallyExpand */</span></div><div class="ttc" id="structDdNode_html_a530470565dbead9303a714e120c35b70"><div class="ttname"><a href="structDdNode.html#a530470565dbead9303a714e120c35b70">DdNode::ref</a></div><div class="ttdeci">DdHalfWord ref</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00274">cudd.h:274</a></div></div>
|
|
16660
16660
|
<div class="ttc" id="cuddInt_8h_html_a5eb828fea5b6c493712d171ca59f4496"><div class="ttname"><a href="cuddInt_8h.html#a5eb828fea5b6c493712d171ca59f4496">cuddRef</a></div><div class="ttdeci">#define cuddRef(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00574">cuddInt.h:574</a></div></div>
|
|
16661
16661
|
<div class="ttc" id="cJSON_8h_html_a750b5d744c39a06bfb13e6eb010e35d0"><div class="ttname"><a href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a></div><div class="ttdeci">int index</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00170">cJSON.h:170</a></div></div>
|
|
16662
16662
|
<div class="ttc" id="cuddInt_8h_html_ab274a54f55f018beea73ed6f1bc630c2"><div class="ttname"><a href="cuddInt_8h.html#ab274a54f55f018beea73ed6f1bc630c2">cuddDeref</a></div><div class="ttdeci">#define cuddDeref(n)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00594">cuddInt.h:594</a></div></div>
|
|
@@ -16674,9 +16674,9 @@ Repeat 1-4 until no further improvement. </li>
|
|
|
16674
16674
|
<div class="ttc" id="cudd_8h_html_aa097684bc69c58891332b245d577b986"><div class="ttname"><a href="cudd_8h.html#aa097684bc69c58891332b245d577b986">CUDD_CONST_INDEX</a></div><div class="ttdeci">#define CUDD_CONST_INDEX</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00107">cudd.h:107</a></div></div>
|
|
16675
16675
|
<div class="ttc" id="cuddInt_8h_html_a2ca9cfb1642557eefc559198c4801092"><div class="ttname"><a href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a></div><div class="ttdeci">#define ddMin(x, y)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00788">cuddInt.h:788</a></div></div>
|
|
16676
16676
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
16677
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
16678
16677
|
<div class="ttc" id="cuddInt_8c_html_ac766e39390bf4d3c975d4a6bd34653dc"><div class="ttname"><a href="cuddInt_8c.html#ac766e39390bf4d3c975d4a6bd34653dc">cuddCacheInsert</a></div><div class="ttdeci">void cuddCacheInsert(DdManager *table, ptruint op, DdNode *f, DdNode *g, DdNode *h, DdNode *data)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l04283">cuddInt.c:4283</a></div></div>
|
|
16679
16678
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
16679
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
16680
16680
|
<div class="ttc" id="cJSON_8cpp_html_a1a05ede2ad100bf5de5dfa7ccdfa4397"><div class="ttname"><a href="cJSON_8cpp.html#a1a05ede2ad100bf5de5dfa7ccdfa4397">NULL</a></div><div class="ttdeci">return NULL</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01173">cJSON.cpp:1173</a></div></div>
|
|
16681
16681
|
<div class="ttc" id="cuddInt_8c_html_a4234aacbccc17b321b44725b3d83e70e"><div class="ttname"><a href="cuddInt_8c.html#a4234aacbccc17b321b44725b3d83e70e">ddBddMaximallyExpand</a></div><div class="ttdeci">static DdNode * ddBddMaximallyExpand(DdManager *dd, DdNode *lb, DdNode *ub, DdNode *f)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l17521">cuddInt.c:17521</a></div></div>
|
|
16682
16682
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
@@ -16739,7 +16739,7 @@ Repeat 1-4 until no further improvement. </li>
|
|
|
16739
16739
|
<p>SeeAlso [getShortest] </p>
|
|
16740
16740
|
|
|
16741
16741
|
<p class="definition">Definition at line <a class="el" href="cuddInt_8c_source.html#l17730">17730</a> of file <a class="el" href="cuddInt_8c_source.html">cuddInt.c</a>.</p>
|
|
16742
|
-
<div class="fragment"><div class="line"><a name="l17735"></a><span class="lineno">17735</span>  {</div><div class="line"><a name="l17736"></a><span class="lineno">17736</span>  <span class="keywordtype">int</span> positive, l, lT, lE;</div><div class="line"><a name="l17737"></a><span class="lineno">17737</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a> = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l17738"></a><span class="lineno">17738</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a> = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l17739"></a><span class="lineno">17739</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#
|
|
16742
|
+
<div class="fragment"><div class="line"><a name="l17735"></a><span class="lineno">17735</span>  {</div><div class="line"><a name="l17736"></a><span class="lineno">17736</span>  <span class="keywordtype">int</span> positive, l, lT, lE;</div><div class="line"><a name="l17737"></a><span class="lineno">17737</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#a49e3c7508be54a84ae83273ed240e31c">one</a> = <a class="code" href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a>(dd);</div><div class="line"><a name="l17738"></a><span class="lineno">17738</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a> = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(one);</div><div class="line"><a name="l17739"></a><span class="lineno">17739</span>  <a class="code" href="structDdNode.html">DdNode</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>, *fv, *fvn;</div><div class="line"><a name="l17740"></a><span class="lineno">17740</span> </div><div class="line"><a name="l17741"></a><span class="lineno">17741</span>  <span class="keywordflow">if</span> (<a class="code" href="st_8h.html#ab10245506c3e5d053c75a902ec62a074">st_lookup_int</a>(table, f, &l)) {</div><div class="line"><a name="l17742"></a><span class="lineno">17742</span>  <span class="keywordflow">return</span>(l);</div><div class="line"><a name="l17743"></a><span class="lineno">17743</span>  }</div><div class="line"><a name="l17744"></a><span class="lineno">17744</span>  <span class="keywordflow">if</span> (f == one) {</div><div class="line"><a name="l17745"></a><span class="lineno">17745</span>  l = 0;</div><div class="line"><a name="l17746"></a><span class="lineno">17746</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (f == zero) {</div><div class="line"><a name="l17747"></a><span class="lineno">17747</span>  l = <a class="code" href="cuddInt_8c.html#a6994699d7a2a82b8f838e9d8d408095a">DD_BIGGY</a>;</div><div class="line"><a name="l17748"></a><span class="lineno">17748</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l17749"></a><span class="lineno">17749</span>  F = <a class="code" href="cudd_8h.html#afbbecf4f6f78f92518f4d0a477d870b6">Cudd_Regular</a>(f);</div><div class="line"><a name="l17750"></a><span class="lineno">17750</span>  fv = <a class="code" href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a>(F);</div><div class="line"><a name="l17751"></a><span class="lineno">17751</span>  fvn = <a class="code" href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a>(F);</div><div class="line"><a name="l17752"></a><span class="lineno">17752</span>  <span class="keywordflow">if</span> (f != F) {</div><div class="line"><a name="l17753"></a><span class="lineno">17753</span>  fv = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fv);</div><div class="line"><a name="l17754"></a><span class="lineno">17754</span>  fvn = <a class="code" href="cudd_8h.html#a352ef8d39e760eaabae6d58d9a5ddbfc">Cudd_Not</a>(fvn);</div><div class="line"><a name="l17755"></a><span class="lineno">17755</span>  }</div><div class="line"><a name="l17756"></a><span class="lineno">17756</span>  lT = <a class="code" href="cuddInt_8c.html#a9c44cbf963f2d7b8989c1fbe85c37d0b">ddBddShortestPathUnate</a>(dd, fv, phases, table);</div><div class="line"><a name="l17757"></a><span class="lineno">17757</span>  lE = <a class="code" href="cuddInt_8c.html#a9c44cbf963f2d7b8989c1fbe85c37d0b">ddBddShortestPathUnate</a>(dd, fvn, phases, table);</div><div class="line"><a name="l17758"></a><span class="lineno">17758</span>  positive = phases[F-><a class="code" href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">index</a>];</div><div class="line"><a name="l17759"></a><span class="lineno">17759</span>  l = positive ? <a class="code" href="cuddInt_8h.html#a2ca9cfb1642557eefc559198c4801092">ddMin</a>(lT+1, lE) : ddMin(lT, lE+1);</div><div class="line"><a name="l17760"></a><span class="lineno">17760</span>  }</div><div class="line"><a name="l17761"></a><span class="lineno">17761</span>  <span class="keywordflow">if</span> (<a class="code" href="st_8h.html#aca243196fa4ab979ccdd33888fdfcacf">st_insert</a>(table, f, (<span class="keywordtype">void</span> *)(<a class="code" href="cuddInt_8h.html#a2c0c93b872fda3900c6a55f17d6b6640">ptrint</a>) l) == <a class="code" href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a>) {</div><div class="line"><a name="l17762"></a><span class="lineno">17762</span>  <span class="keywordflow">return</span>(<a class="code" href="cudd_8h.html#aea3f40d6c6354b5b1475537cd2431ab4">CUDD_OUT_OF_MEM</a>);</div><div class="line"><a name="l17763"></a><span class="lineno">17763</span>  }</div><div class="line"><a name="l17764"></a><span class="lineno">17764</span>  <span class="keywordflow">return</span>(l);</div><div class="line"><a name="l17765"></a><span class="lineno">17765</span> </div><div class="line"><a name="l17766"></a><span class="lineno">17766</span>  } <span class="comment">/* end of ddShortestPathUnate */</span></div><div class="ttc" id="cuddInt_8h_html_a2c0c93b872fda3900c6a55f17d6b6640"><div class="ttname"><a href="cuddInt_8h.html#a2c0c93b872fda3900c6a55f17d6b6640">ptrint</a></div><div class="ttdeci">int ptrint</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00256">cuddInt.h:256</a></div></div>
|
|
16743
16743
|
<div class="ttc" id="cudd_8h_html_aea3f40d6c6354b5b1475537cd2431ab4"><div class="ttname"><a href="cudd_8h.html#aea3f40d6c6354b5b1475537cd2431ab4">CUDD_OUT_OF_MEM</a></div><div class="ttdeci">#define CUDD_OUT_OF_MEM</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00088">cudd.h:88</a></div></div>
|
|
16744
16744
|
<div class="ttc" id="st_8h_html_ab10245506c3e5d053c75a902ec62a074"><div class="ttname"><a href="st_8h.html#ab10245506c3e5d053c75a902ec62a074">st_lookup_int</a></div><div class="ttdeci">int st_lookup_int(st_table *, void *, int *)</div><div class="ttdef"><b>Definition:</b> <a href="st_8c_source.html#l00307">st.c:307</a></div></div>
|
|
16745
16745
|
<div class="ttc" id="structDdNode_html"><div class="ttname"><a href="structDdNode.html">DdNode</a></div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00271">cudd.h:271</a></div></div>
|
|
@@ -16752,8 +16752,8 @@ Repeat 1-4 until no further improvement. </li>
|
|
|
16752
16752
|
<div class="ttc" id="cuddInt_8h_html_a09834c697b92ac296b1e50c863f88262"><div class="ttname"><a href="cuddInt_8h.html#a09834c697b92ac296b1e50c863f88262">cuddT</a></div><div class="ttdeci">#define cuddT(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00626">cuddInt.h:626</a></div></div>
|
|
16753
16753
|
<div class="ttc" id="cuddInt_8c_html_a6994699d7a2a82b8f838e9d8d408095a"><div class="ttname"><a href="cuddInt_8c.html#a6994699d7a2a82b8f838e9d8d408095a">DD_BIGGY</a></div><div class="ttdeci">#define DD_BIGGY</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16539">cuddInt.c:16539</a></div></div>
|
|
16754
16754
|
<div class="ttc" id="st_8h_html_a1276d6ae80c20ae2ec082db7c502ef75"><div class="ttname"><a href="st_8h.html#a1276d6ae80c20ae2ec082db7c502ef75">ST_OUT_OF_MEM</a></div><div class="ttdeci">#define ST_OUT_OF_MEM</div><div class="ttdef"><b>Definition:</b> <a href="st_8h_source.html#l00041">st.h:41</a></div></div>
|
|
16755
|
-
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00013">CFLGrammar.txt:13</a></div></div>
|
|
16756
16755
|
<div class="ttc" id="structDdNode_html_abbd39b25b9abe4b4d53cd267a4103bda"><div class="ttname"><a href="structDdNode.html#abbd39b25b9abe4b4d53cd267a4103bda">DdNode::index</a></div><div class="ttdeci">DdHalfWord index</div><div class="ttdef"><b>Definition:</b> <a href="cudd_8h_source.html#l00273">cudd.h:273</a></div></div>
|
|
16756
|
+
<div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
|
|
16757
16757
|
<div class="ttc" id="cuddInt_8h_html_aaef03f10591d8e28bb5fecd2aa7c93ff"><div class="ttname"><a href="cuddInt_8h.html#aaef03f10591d8e28bb5fecd2aa7c93ff">cuddE</a></div><div class="ttdeci">#define cuddE(node)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00642">cuddInt.h:642</a></div></div>
|
|
16758
16758
|
<div class="ttc" id="cuddInt_8c_html_ad9d1aaa6ee837cb65ffcf74932161586"><div class="ttname"><a href="cuddInt_8c.html#ad9d1aaa6ee837cb65ffcf74932161586">zero</a></div><div class="ttdeci">static DdNode * zero</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l16562">cuddInt.c:16562</a></div></div>
|
|
16759
16759
|
<div class="ttc" id="cuddInt_8h_html_a0fc86b7b0c157b7fa3738661d65a22d7"><div class="ttname"><a href="cuddInt_8h.html#a0fc86b7b0c157b7fa3738661d65a22d7">DD_ONE</a></div><div class="ttdeci">#define DD_ONE(dd)</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8h_source.html#l00881">cuddInt.h:881</a></div></div>
|