mirror of
https://github.com/arnaucube/circom.git
synced 2026-02-06 18:56:40 +01:00
C generation
This commit is contained in:
1
test/circuits/in.bin
Normal file
1
test/circuits/in.bin
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
1
test/circuits/in.json
Normal file
1
test/circuits/in.json
Normal file
@@ -0,0 +1 @@
|
||||
{ "in1": 1, "in2": [2,3], "in3":[[4,5],[6,7],[8,9]] }
|
||||
@@ -1,18 +1,54 @@
|
||||
template Internal() {
|
||||
signal input in;
|
||||
signal output out;
|
||||
signal input in1;
|
||||
signal input in2[2];
|
||||
signal input in3[3][2];
|
||||
|
||||
out <== in;
|
||||
signal output out1;
|
||||
signal output out2[2];
|
||||
signal output out3[3][2];
|
||||
|
||||
out1 <== in1;
|
||||
out2[0] <== in2[0];
|
||||
out2[1] <== in2[1];
|
||||
|
||||
out3[0][0] <== in3[0][0];
|
||||
out3[0][1] <== in3[0][1];
|
||||
out3[1][0] <== in3[1][0];
|
||||
out3[1][1] <== in3[1][1];
|
||||
out3[2][0] <== in3[2][0];
|
||||
out3[2][1] <== in3[2][1];
|
||||
}
|
||||
|
||||
template InOut() {
|
||||
signal input in;
|
||||
signal output out;
|
||||
signal input in1;
|
||||
signal input in2[2];
|
||||
signal input in3[3][2];
|
||||
|
||||
signal output out1;
|
||||
signal output out2[2];
|
||||
signal output out3[3][2];
|
||||
|
||||
component internal = Internal();
|
||||
|
||||
internal.in <== in;
|
||||
internal.out ==> out;
|
||||
internal.in1 <== in1;
|
||||
internal.in2[0] <== in2[0];
|
||||
internal.in2[1] <== in2[1];
|
||||
internal.in3[0][0] <== in3[0][0];
|
||||
internal.in3[0][1] <== in3[0][1];
|
||||
internal.in3[1][0] <== in3[1][0];
|
||||
internal.in3[1][1] <== in3[1][1];
|
||||
internal.in3[2][0] <== in3[2][0];
|
||||
internal.in3[2][1] <== in3[2][1];
|
||||
|
||||
internal.out1 ==> out1;
|
||||
internal.out2[0] ==> out2[0];
|
||||
internal.out2[1] ==> out2[1];
|
||||
internal.out3[0][0] ==> out3[0][0];
|
||||
internal.out3[0][1] ==> out3[0][1];
|
||||
internal.out3[1][0] ==> out3[1][0];
|
||||
internal.out3[1][1] ==> out3[1][1];
|
||||
internal.out3[2][0] ==> out3[2][0];
|
||||
internal.out3[2][1] ==> out3[2][1];
|
||||
}
|
||||
|
||||
component main = InOut();
|
||||
|
||||
20
test/inout.js
Normal file
20
test/inout.js
Normal file
@@ -0,0 +1,20 @@
|
||||
const chai = require("chai");
|
||||
const path = require("path");
|
||||
|
||||
const c_tester = require("../index.js").c_tester;
|
||||
const stringifyBigInts = require("snarkjs").stringifyBigInts;
|
||||
|
||||
|
||||
describe("inout test", function () {
|
||||
this.timeout(100000);
|
||||
it("Should compile a code with vars inside a for", async () => {
|
||||
const cir = await c_tester(path.join(__dirname, "circuits", "inout.circom"));
|
||||
|
||||
const out = await cir.calculateWitness({in1: 1, in2: [2,3], in3:[[4,5], [6,7], [8,9]]});
|
||||
|
||||
// console.log(JSON.stringify(stringifyBigInts(out),null,1));
|
||||
await cir.assertOut(out, {out1: 1, out2: [2,3], out3: [[4,5], [6,7],[8,9]]} );
|
||||
|
||||
await cir.release();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user