You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
include "../node_modules/circom/circuits/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]; }
|