mirror of
https://github.com/arnaucube/circom.git
synced 2026-02-07 11:16:42 +01:00
Readme, License Fixes and another test added
This commit is contained in:
67
circuits/gates.circom
Normal file
67
circuits/gates.circom
Normal file
@@ -0,0 +1,67 @@
|
||||
|
||||
template XOR() {
|
||||
signal input a;
|
||||
signal input b;
|
||||
signal output out;
|
||||
|
||||
out <== a + b - 2*a*b;
|
||||
}
|
||||
|
||||
template AND() {
|
||||
signal input a;
|
||||
signal input b;
|
||||
signal output out;
|
||||
|
||||
out <== a*b;
|
||||
}
|
||||
|
||||
template OR() {
|
||||
signal input a;
|
||||
signal input b;
|
||||
signal output out;
|
||||
|
||||
out <== a + b - a*b;
|
||||
}
|
||||
|
||||
template NOT() {
|
||||
signal input in;
|
||||
signal output out;
|
||||
|
||||
out <== 1 + in - 2*in;
|
||||
}
|
||||
|
||||
template NAND() {
|
||||
signal input a;
|
||||
signal input b;
|
||||
signal output out;
|
||||
|
||||
out <== 1 - a*b;
|
||||
}
|
||||
|
||||
template NOR() {
|
||||
signal input a;
|
||||
signal input b;
|
||||
signal output out;
|
||||
|
||||
out <== a*b + 1 - a - b;
|
||||
}
|
||||
|
||||
template Xor3(n) {
|
||||
signal input a[n];
|
||||
signal input b[n];
|
||||
signal input c[n];
|
||||
signal output out[n];
|
||||
|
||||
component xor1[n] = XOR();
|
||||
component xor2[n] = XOR();
|
||||
|
||||
for (var k=0; k<n; k++) {
|
||||
xor1[k].a <== a[k];
|
||||
xor1[k].b <== b[k];
|
||||
|
||||
xor2[k].a <== xor1[k].out;
|
||||
xor2[k].b <== c[k];
|
||||
|
||||
out[k] <== xor2[k].out;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user