Arithmetic and Logic - Algorand Specifications

Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Algorand Specifications

OPCODE DESCRIPTION
+ A plus B. Fail on overflow.
- A minus B. Fail if B > A.
/ A divided by B (truncated division). Fail if B == 0.
* A times B. Fail on overflow.
< A less than B => {0 or 1}
> A greater than B => {0 or 1}
<= A less than or equal to B => {0 or 1}
>= A greater than or equal to B => {0 or 1}
&& A is not zero and B is not zero => {0 or 1}
`
shl A times 2^B, modulo 2^64
shr A divided by 2^B
sqrt The largest integer I such that I^2 <= A
bitlen The highest set bit in A. If A is a byte-array, it is interpreted as a big-endian unsigned integer. bitlen of 0 is 0, bitlen of 8 is 4
exp A raised to the Bth power. Fail if A == B == 0 and on overflow
== A is equal to B => {0 or 1}
!= A is not equal to B => {0 or 1}
! A == 0 yields 1; else 0
itob converts uint64 A to big-endian byte array, always of length 8
btoi converts big-endian byte array A to uint64. Fails if len(A) > 8. Padded by leading 0s if len(A) < 8.
% A modulo B. Fail if B == 0.
` `
& A bitwise-and B
^ A bitwise-xor B
~ bitwise invert value A
mulw A times B as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low
addw A plus B as a 128-bit result. X is the carry-bit, Y is the low-order 64 bits.
divw A,B / C. Fail if C == 0 or if result overflows.
divmodw W,X = (A,B / C,D); Y,Z = (A,B modulo C,D)
expw A raised to the Bth power as a 128-bit result in two uint64s. X is the high 64 bits, Y is the low. Fail if A == B == 0 or if the results exceeds 2^128-1