Module Mavryk_raw_protocol_002_PtBoreas.Bitset

type t

A bitset is a compact structure to store a set of integers.

val empty : t

A bitset encoding the empty set.

mem field i returns true iff i has been added in field.

This functions returns Invalid_input i if i is negative.

add field i returns a new bitset which contains i in addition to the previous integers of field.

This functions returns Invalid_input i if i is negative.

from_list positions folds add over the positions starting from empty. This function returns Invalid_input i if i is negative and appears in positions.

fill ~length is equivalent to setting all bits for positions in 0, length - 1 to one. i.e., to from_list (0 -- size -1) or to (2 ^ length) - 1. But it's more efficient than folding on individual positions to set them.

The function returns Invalid_position length if length is negative.

val inter : t -> t -> t

inter set_l set_r returns set which is result of the intersection of set_l and set_r.

val diff : t -> t -> t

diff set_l set_r returns a set containing fiels in set_l that are not in set_r.

val occupied_size_in_bits : t -> int

occupied_size_in_bits bitset returns the current number of bits occupied by the bitset.

val hamming_weight : t -> int

hamming_weight bitset returns the Hamming weight of bitset.

to_z t Returns the sum of powers of two of the given bitset.