ite有點問題,不知道有沒有人可以幫我看一下
割掉下面就好了,所以我想應該是這裡,可是對好久都覺得沒錯
// standardize (f, g, h) triplet
if(f==g) return ite(f,BddNode::_one,h);
if(f==h) return ite(f,g,BddNode::_zero);
if(f==~g) return ite(f,BddNode::_zero,h);
if(f==~h) return ite(f,g,BddNode::_one);
// "isNegEdge" may be updated too
if(g==BddNode::_one){
if(h.getLevel()<f.getLevel() )return ite(h,BddNode::_one,f);
else if(h.getLevel()==f.getLevel() && (&h<&f) )
return ite(h,BddNode::_one,f);
}
if(h==BddNode::_zero){
if(g.getLevel()<f.getLevel() )return ite(g,f,BddNode::_zero);
else if(g.getLevel()==f.getLevel() && (&g<&f) )
return ite(g,f,BddNode::_zero);
}
if(h==BddNode::_one){
if(g.getLevel()<f.getLevel() )return ite(g,~f,BddNode::_zero);
else if(g.getLevel()==f.getLevel() && (&g<&f) )
return ite(~g,~f,BddNode::_one);
}
if(g==BddNode::_zero){
if(h.getLevel()<f.getLevel() )return ite(h,BddNode::_zero,~f);
else if(h.getLevel()==f.getLevel() && (&g<&f) )
return ite(~g,BddNode::_zero,~f);
}
if(h==~g){
if(g.getLevel()<f.getLevel() )return ite(g,f,~f);
else if(g.getLevel()==f.getLevel() && (&g<&f) )
return ite(g,f,~f);
}
if(f.isNegEdge()&&!g.isNegEdge())
return ite(~f,h,g);
if(!f.isNegEdge()&& g.isNegEdge())
return ~ite(f,~g,~h);
if(f.isNegEdge()&& g.isNegEdge())
return ~ite(~f,~h,~g);
----
好想睡
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.243.61