namillum
Version:
Bubble Protocol SDK
75 lines (47 loc) • 2.49 kB
Markdown
---
tags:
- int
- uint
- integers
---
# Integer
Scilla defines signed and unsigned integer types of 32, 64, 128, and 256 bits.
These integer types can be specified with the keywords `IntX` and `UintX` where `X` can be `32`, `64`, `128`, or `256`.
For example, the type of an unsigned integer of 32 bits is `Uint32`.
The following code snippet declares a variable of type Uint32:
```ocaml
scilla_version 0
import IntUtils
let zero_int32 = Int32 0
let zero_int64 = Int64 0
let zero_int128 = Int128 0
let zero_int256 = Int256 0
let zero_uint32 = Uint32 0
let zero_uint64 = Uint64 0
let zero_uint128 = Uint128 0
let zero_uint256 = Uint256 0
contract Integers()
transition IsGreaterThan(a: Int32, b: Int32)
is_gt = int32_gt a b;
ev = {_eventname : "IsGreaterThan"; a: a; b: b; is_a_greater_b: is_gt};
event ev
end
transition Example(a: Uint128, b: Uint128)
c = builtin eq a b; (*Is a equal to b? Returns a Bool.*)
d = builtin add a b; (*Add integer values a and b. Returns an integer of the same type.*)
e = builtin sub a b; (*Subtract b from a. Returns an integer of the same type.*)
f = builtin mul a b; (*Integer product of a and b. Returns an integer of the same type.*)
g = builtin div a b; (*Integer division of a by b. Returns an integer of the same type.*)
h = builtin rem a b; (*The remainder of integer division of a by b. Returns an integer of the same type.*)
i = builtin uint128_lt a b; (*Is a less than b? Returns a Bool.*)
j = builtin uint128_le a b; (*Is a less or equal to b? Returns a Bool.*)
k = builtin uint128_gt a b; (*Is a greater than b? Returns a Bool.*)
l = builtin uint128_ge a b; (*Is a greater or equal than b? Returns a Bool.*)
m = builtin uint128_pow a b; (*a raised to the power of b. Returns an integer of the same type as a.*)
p = builtin uint128_isqrt a; (*Computes the integer square root of i, i.e. the largest integer j such that j * j <= i. Returns an integer of the same type as i.*)
q = builtin uint128_to_nat a; (*Convert a value of type Uint32 to the equivalent value of type Nat.*)
r = builtin to_(u)int32/64/128/256 (*Convert a UintX / IntX or a String (that represents a decimal number) value to the result of Option UintX or Option IntX type. Returns Some res if the conversion succeeded and None otherwise. The conversion may fail when*)
end
```
## Further reading
[Scilla Documentation - Integers](https://scilla.readthedocs.io/en/latest/scilla-in-depth.html#integer-types)