Files
circomlib-ml/circuits/util.circom
2022-05-12 01:59:57 +08:00

48 lines
971 B
Plaintext

pragma circom 2.0.3;
include "../node_modules/circomlib/circuits/Sign.circom";
include "../node_modules/circomlib/circuits/bitify.circom";
template IsNegative() {
signal input in;
signal output out;
component num2Bits = Num2Bits(254);
num2Bits.in <== in;
component sign = Sign();
for (var i = 0; i < 254; i++) {
sign.in[i] <== num2Bits.out[i];
}
out <== sign.sign;
}
template IsPositive() {
signal input in;
signal output out;
component num2Bits = Num2Bits(254);
num2Bits.in <== in;
component sign = Sign();
for (var i = 0; i < 254; i++) {
sign.in[i] <== num2Bits.out[i];
}
out <== 1 - sign.sign;
}
template Sum(nInputs) {
signal input in[nInputs];
signal output out;
signal partialSum[nInputs];
partialSum[0] <== in[0];
for (var i=1; i<nInputs; i++) {
partialSum[i] <== partialSum[i-1] + in[i];
}
out <== partialSum[nInputs-1];
}