include "bitify.circom"; // Returns 1 if in (in binary) > ct template CompConstant(ct) { signal input in[254]; signal output out; signal parts[127]; signal sout; var clsb; var cmsb; var slsb; var smsb; var sum=0; var b = (1 << 128) -1; var a = 1; var e = 1; var i; for (i=0;i<127; i++) { clsb = (ct >> (i*2)) & 1; cmsb = (ct >> (i*2+1)) & 1; slsb = in[i*2]; smsb = in[i*2+1]; if ((cmsb==0)&(clsb==0)) { parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; } else if ((cmsb==0)&(clsb==1)) { parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; } else if ((cmsb==1)&(clsb==0)) { parts[i] <== b*smsb*slsb - a*smsb + a; } else { parts[i] <== -a*smsb*slsb + a; } sum = sum + parts[i]; b = b -e; a = a +e; e = e*2; } sout <== sum; component num2bits = Num2Bits(135); num2bits.in <== sout; out <== num2bits.out[127]; }