mirror of
https://github.com/socathie/circomlib-ml.git
synced 2026-01-08 21:48:06 -05:00
48 lines
971 B
Plaintext
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];
|
|
} |