#7 Circom: Comparator Circuits
IsZero
template IsZero() {
// inputs
signal input in;
signal output out;
// intermediate
signal inv;
inv <-- in!=0 ? 1/in : 0;
out <== -in*inv +1;
in*out === 0;
}Last updated
template IsZero() {
// inputs
signal input in;
signal output out;
// intermediate
signal inv;
inv <-- in!=0 ? 1/in : 0;
out <== -in*inv +1;
in*out === 0;
}Last updated
-in*inv +1 = 0*0 + 1 = 1
out = 1
out === 1
in * out = 0 * 1 = 0
(honouring: in*out === 0)-in*inv +1 = -1 + 1 = 0
out = 0
out === 0
in * out = 1 * 0 = 0
(honouring: in*out === 0)