wrap-add nat8(a nat8, b nat8)wrap-add nat16(a nat16, b nat16)wrap-add nat32(a nat32, b nat32)wrap-add nat64(a nat64, b nat64)wrap-add int8(a int8, b int8)wrap-add int16(a int16, b int16)wrap-add int32(a int32, b int32)wrap-add int64(a int64, b int64)wrap-sub nat8(a nat8, b nat8)wrap-sub nat16(a nat16, b nat16)wrap-sub nat32(a nat32, b nat32)wrap-sub nat64(a nat64, b nat64)wrap-sub int8(a int8, b int8)wrap-sub int16(a int16, b int16)wrap-sub int32(a int32, b int32)wrap-sub int64(a int64, b int64)wrap-mul nat8(a nat8, b nat8)wrap-mul nat16(a nat16, b nat16)wrap-mul nat32(a nat32, b nat32)wrap-mul nat64(a nat64, b nat64)wrap-mul int8(a int8, b int8)wrap-mul int16(a int16, b int16)wrap-mul int32(a int32, b int32)wrap-mul int64(a int64, b int64)rotate-left nat64(a nat64, amount nat64)rotate-right nat64(a nat64, amount nat64)bits-intersect bool(a nat8, b nat8)bits-intersect bool(a nat16, b nat16)bits-intersect bool(a nat32, b nat32)bits-intersect bool(a nat64, b nat64)has-all-bits bool(a nat8, b nat8)has-all-bits bool(a nat16, b nat16)has-all-bits bool(a nat32, b nat32)has-all-bits bool(a nat64, b nat64)nth-bit nat64(bit-index nat64)has-bit bool(a nat64, bit-index nat64)add-bit nat64(a nat64, bit-index nat64)sub-bit nat64(a nat64, bit-index nat64)count-ones nat64(a nat64)bits-cat nat16(a nat8, b nat8)bits-cat nat32(a nat16, b nat16)bits-cat nat64(a nat32, b nat32)high-n-bits nat32(n nat32)high-n-bits nat64(n nat64)low-n-bits nat32(n nat32)low-n-bits nat64(n nat64)log-2-rounded-down nat64(a nat64)is-power-of-two bool(a nat64)round-up-to-power-of-two nat64(a nat64)
Functions for operating on the individual bits in nats / ints.
Bit indexes are counted from the right, so the least-siginificant digit is 0. So, the number 5 has bits 0 and 2 set, since 5 is
2**0 + 2**2.