pragma language_version 0.21;
export ledger result: Uint<16>;
export circuit add(num1: Uint<16>, num2: Uint<16>): [] {
result = disclose(num1 + num2 as Uint<16>);
}
export circuit subtract(num1: Uint<16>, num2: Uint<16>): [] {
result = disclose(num1 - num2 as Uint<16>);
}
export circuit multiply(num1: Uint<16>, num2: Uint<16>): [] {
result = disclose(num1 * num2 as Uint<16>);
}
export circuit square(num1: Uint<16>): [] {
result = disclose(num1 * num1 as Uint<16>);
}
witness divMod(num1: Uint<16>, num2: Uint<16>): [Uint<16>, Uint<16>];
circuit divide(num1: Uint<16>, num2: Uint<16>): Uint<16> {
const [quo, rem] = divMod(num1, num2);
assert(rem < num2 && quo * num2 + rem == num1, "incorrect division");
return quo;
}