checked_ointchecked_oint is an OCaml library for checked integer arithmetic. We support the full set of signed and unsigned integers of bitnesses 8, 16, 32, 64, and 128.
$ opam install checked_ointopen Checked_oint
let () =
let x = U8.of_int_exn 50 in
let y = U8.of_int_exn 70 in
assert (U8.equal (U8.add_exn x y) (U8.of_int_exn 120));
assert (Option.is_none (U8.mul x y))You can find the API documentation here.
u8, u16, i8, and i16 are represented as int internally.u32 and i32 (resp. u64 and i64) are represented as int32 (resp. int64) internally.u128 and i128 are represented as { high : int64; low : int64 } internally.Operations on 128-bit integers are implemented solely in C.
__int128 extension by GCC and Clang.version field in dune-project.dune build to generate checked_oint.opam.CHANGELOG.md.Release the project in GitHub Releases.
git archive HEAD -o checked_oint-<major>.<minor>.<patch>.tar.gzType git pull && opam publish.
md5sum and sha512sum on the archive).Including the output of git archive is needed because GitHub does not guarantee stability of source code archives. With a static asset, we will always get the same checksum, which is crucial for packaging.