arnaucube
arnaucube/circomPublic Self-hosted repository
circom/test/circuits/arrays.circom
test/circuits/arrays.circomRaw
 1// arr1
 2
 3
 4function Add3(arr1, arr2, arr3) {
 5    var res[3];
 6
 7    res[0] = arr1;
 8    res[1] = 0;
 9    for (var i=0; i<2; i += 1) {
10        res[1] = res[1] + arr2[i];
11    }
12
13    res[2] = 0;
14    for (var i=0; i<2; i++) {
15        for (var j=0; j<3; j += 1) {
16            res[2] = res[2] + arr3[i][j];
17        }
18    }
19
20    return res;
21}
22
23template Main() {
24    signal input in;
25    signal output out[3];
26
27    var c[3] = Add3(1, [2,3], [[4,5,6], [7,8,9]]); // [1, 5, 39];
28    var d[3] = Add3(in, [in+1, in+2], [[in+1, in+2, in+3], [in+1, in+2, in+3]]);
29
30    out[0] <-- d[0] + c[0];
31    out[0] === in+c[0];
32
33    out[1] <-- d[1]+c[1];
34    out[1] === 2*in+3+c[1];
35
36    out[2] <-- d[2]+c[2];
37    out[2] === 6*in+12+c[2];
38}
39
40component main = Main();