/// <summary> /// (dd && list[0]) || (dd && list[1]) ... /// [ REFS: 'result', DEREFS: dd, list ] /// </summary> /// <param name="dd"></param> /// <param name="list"></param> /// <returns></returns> public static CUDDNode And(CUDDNode dd, List <CUDDNode> list) { CUDDNode result = CUDD.Constant(0); foreach (CUDDNode dd1 in list) { CUDD.Ref(dd); CUDDNode temp = CUDD.Function.And(dd, dd1); result = CUDD.Function.Or(result, temp); } CUDD.Deref(dd); return(result); }
/// <summary> /// (dd && list[0]) || (dd && list[1]) ... /// [ REFS: 'result', DEREFS: dd, list ] /// </summary> /// <param name="dd"></param> /// <param name="list"></param> /// <returns></returns> public static List <CUDDNode> And(List <CUDDNode> list, CUDDNode dd) { List <CUDDNode> result = new List <CUDDNode>(); foreach (CUDDNode dd1 in list) { CUDD.Ref(dd); CUDDNode temp = CUDD.Function.And(dd, dd1); if (temp.Equals(CUDD.ZERO)) { CUDD.Deref(temp); } else { result.Add(temp); } } CUDD.Deref(dd); return(result); }
public void Ref() { CUDD.Ref(this.vars); }