package hardcaml_verify

  1. Overview
  2. Docs
Hardcaml Verification Tools

Install

Dune Dependency

Authors

Maintainers

Sources

v0.17.0.tar.gz
sha256=a09a904776ad848f685afb4ebe85e0d449acb81f6f2425fccc52a3c5b76be629

doc/src/hardcaml_verify.kernel/is_one_hot.ml.html

Source file is_one_hot.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
open Base
open Hardcaml

module Make (Comb : Comb.S) = struct
  open Comb

  type nonrec t =
    { no_bit_set : t
    ; one_bit_set : t
    ; many_bits_set : t
    }

  let create vec =
    let any_bit_set, many_bits_set =
      List.fold (bits_msb vec) ~init:(gnd, gnd) ~f:(fun (any_bit_set, overflow) bit ->
        any_bit_set |: bit, overflow |: (any_bit_set &: bit))
    in
    let no_bit_set = ~:any_bit_set in
    let one_bit_set = any_bit_set &: ~:many_bits_set in
    { no_bit_set; one_bit_set; many_bits_set }
  ;;
end
OCaml

Innovation. Community. Security.