You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
1001 B

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;
}
}