# Integer Operations There are four supported integer datatypes, `TINYINT` (8 bits), `SMALLINT` (16 bits), `INTEGER` (32 bits), and `BIGINT` (64 bits). The legal operations are `+` (plus, unary and binary), `-` (minus, unary and binary), `*` (multiplication), `/` (division), `%` (modulus). Unary minus (negation) cannot be applied to unsigned values. Modulus involving negative numbers happens as follows: For: ``mod = x % y`` - if ``x >= 0`` and ``y > 0`` then: ``x - (floor(x / y) * y)`` - if ``x >= 0`` and ``y < 0`` then: ``x % abs(y)`` - if ``x < 0`` and ``y > 0`` then: ``- abs(x) % y`` - if ``x < 0`` and ``y > 0`` then: ``- abs(x) % abs(y)`` Example:
mod = x % y
x y mod
8 3 2
8 -3 2
-8 3 -2
-8 -3 -2
Casting a string to an integer type will produce a runtime error if the string cannot be interpreted as a number. Division or modulus by zero cause a runtime error. Operations that cause integer overflow or underflow (example: multiplication or division of minimum integer value by -1) produce run time errors. ## Predefined functions on integer values
Predefined functions on integer values
Function Description
ABS(value) return absolute value.
MOD(left, right) integer modulus. Same as left % right.
SEQUENCE(start, end) returns an array of integers from start to end (inclusive). If end < start, an empty array is returned. If any of the arguments are NULL, NULL is returned.
## Operations not supported Non-deterministic functions, such as `RAND` are currently not supported in DBSP.