remove pows and shifts for optimization
Jordi Baylina jordi@baylina.cat
Thu, 23 Jan 2020 07:23:17 +0700
3 files changed,
273 insertions(+),
6 deletions(-)
M
circuits/binsum.circom
→
circuits/binsum.circom
@@ -72,19 +72,26 @@
var k; var j; + var e2; + + e2 = 1; for (k=0; k<n; k++) { for (j=0; j<ops; j++) { - lin += in[j][k] * 2**k; + lin += in[j][k] * e2; } + e2 = e2 + e2; } + e2 = 1; for (k=0; k<nout; k++) { out[k] <-- (lin >> k) & 1; // Ensure out is binary out[k] * (out[k] - 1) === 0; - lout += out[k] * 2**k; + lout += out[k] * e2; + + e2 = e2+e2; } // Ensure the sum;
M
circuits/bitify.circom
→
circuits/bitify.circom
@@ -26,10 +26,12 @@ signal input in;
signal output out[n]; var lc1=0; + var e2=1; for (var i = 0; i<n; i++) { out[i] <-- (in >> i) & 1; out[i] * (out[i] -1 ) === 0; - lc1 += out[i] * 2**i; + lc1 += out[i] * e2; + e2 = e2+e2; } lc1 === in;@@ -54,8 +56,10 @@ signal input in[n];
signal output out; var lc1=0; + var e2 = 1; for (var i = 0; i<n; i++) { - lc1 += in[i] * 2**i; + lc1 += in[i] * e2; + e2 = e2 + e2; } lc1 ==> out;
M
test/circuits/in.json
→
test/circuits/in.json
@@ -1,2 +1,258 @@
-{"enabled":1,"Ax":"13277427435165878497778222415993513565335242147425444199013288855685581939618","Ay":"13622229784656158136036771217484571176836296686641868549125388198837476602820","R8x":"11220723668893468001994760120794694848178115379170651044669708829805665054484","R8y":"2367470421002446880004241260470975644531657398480773647535134774673409612366","S":"1307100909096544936550139783786226891472336052773077686618468233418583414320","M":"1234"} - +{ + "in": [ + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1" + ] +}