Built-In Operations
Overview of the primitive and the array Nada operations.
Primitive Operations
Operation with linked example | Syntax | Supported Types ( P: Public , S: Secret ) |
---|---|---|
Addition | x + y | P ← P + P ,S ← P + S ,S ← S + P ,S ← S + S |
Subtraction | x - y | P ← P - P ,S ← P - S ,S ← S - P ,S ← S - S |
Multiplication | x * y | P ← P * P ,S ← P * S ,S ← S * P ,S ← S * S |
Power | x ** y | P ← P ** P |
Division | x / y | P ← P / P ,S ← P / S ,S ← S / P ,S ← S / S |
Modulo | x % y | P ← P % P ,S ← P % S ,S ← S % P ,S ← S % S |
Left shift and Right shift | x << y ,x >> y | P ← P << P ,S ← S << P |
Probabilistic truncation | x.trunc_pr(y) | S ← S.trunc_pr(P) |
Comparisons | x < y ,x <= y ,x > y ,x >= y | P ← P < P ,S ← P < S ,S ← S < P ,S ← S < S |
Ternary "if else" (public condition) | cond.if_else(x, y) | P ← P.if_else(P, P) ,S ← P.if_else(P, S) ,S ← P.if_else(S, P) ,S ← P.if_else(S, S) |
Ternary "if else" (secret condition) | cond.if_else(x, y) | S ← S.if_else(P, P) ,S ← S.if_else(P, S) ,S ← S.if_else(S, P) ,S ← S.if_else(S, S) |
Reveal (convert a private value into a public value) | x.reveal() | P ← S.reveal() |
Equality | x == y | S ← S == S ,S ← S == P ,S ← P == S ,P ← P == P |
Public Output Equality (publicly output if two secrets are equal) | x.public_equals(y) | P ← S.public_equals(S) |
Not | ~bool | S ← ~S ,P ← ~P |