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