ElementEncoding* elemEnc = getElementEncoding(elem);
for(uint i=0; i<elemEnc->encArraySize; i++){
if(isinUseElement(elemEnc, i) && elemEnc->encodingArray[i]==value) {
- return generateBinaryConstraint(This->cnf, elemEnc->numVars, elemEnc->variables, i);
+ return (elemEnc->numVars == 0) ? E_True: generateBinaryConstraint(This->cnf, elemEnc->numVars, elemEnc->variables, i);
}
}
- return E_BOGUS;
+ return E_False;
}
Edge getElementValueOneHotConstraint(SATEncoder * This, Element* elem, uint64_t value) {
#define model_print printf
-#define NEXTPOW2(x) (1<<(sizeof(uint)*8-__builtin_clz(x-1)))
+#define NEXTPOW2(x) ((x==1) ? 1 : (1<<(sizeof(uint)*8-__builtin_clz(x-1))))
#define NUMBITS(x) ((x==0) ? 0 : 8*sizeof(x)-__builtin_clz(x))
#ifdef CONFIG_DEBUG