From 2f28fc70023e0c9b8f51b6fcbb6de7f6b6474512 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 23 Jan 2020 07:23:17 +0700 Subject: [PATCH] remove pows and shifts for optimization --- circuits/binsum.circom | 11 +- circuits/bitify.circom | 8 +- test/circuits/in.json | 260 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 273 insertions(+), 6 deletions(-) diff --git a/circuits/binsum.circom b/circuits/binsum.circom index 3783e26..6fd79ad 100644 --- a/circuits/binsum.circom +++ b/circuits/binsum.circom @@ -72,19 +72,26 @@ template BinSum(n, ops) { var k; var j; + var e2; + + e2 = 1; for (k=0; k> 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; diff --git a/circuits/bitify.circom b/circuits/bitify.circom index 2050e13..60fb89c 100644 --- a/circuits/bitify.circom +++ b/circuits/bitify.circom @@ -26,10 +26,12 @@ template Num2Bits(n) { signal output out[n]; var lc1=0; + var e2=1; for (var i = 0; i> 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 @@ template Bits2Num(n) { signal output out; var lc1=0; + var e2 = 1; for (var i = 0; i out; diff --git a/test/circuits/in.json b/test/circuits/in.json index 89d127c..2ebe0d5 100644 --- a/test/circuits/in.json +++ b/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" + ] +} \ No newline at end of file