Module Low_level.Fp_licence

The licences of the rounding-changing algebra over the reals (gh-ocannl-998), one field per licence, each true when that family of rewrites may run:

Integer precisions take every licence but the floating-only arms (the interchanges and contraction): reassociation is exact in wrapping arithmetic, and the index canonicalizer relies on it.

type t = {
  1. contract : Base.bool;
  2. reassociate : Base.bool;
  3. finite_math : Base.bool;
}
include Sexplib0.Sexpable.S with type t := t
val t_of_sexp : Sexplib0__.Sexp.t -> t
val sexp_of_t : t -> Sexplib0__.Sexp.t
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
include Ppx_compare_lib.Comparable.S with type t := t
val compare : t Base__Ppx_compare_lib.compare
val exact : t

No licence: only exact rewrites.

val all : t
val of_config : Base.unit -> t

The configured licences: the keys fp_contract, fp_reassociate and fp_finite_math.

val fields : t -> (Base.string * Base.bool) Base.list

Each licence under its config key, for reports.