Low_level.Fp_licenceThe 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:
contract: fusing a floating a * b + c into one FMA (one rounding instead of two);reassociate: constant reassociation through Add/Mul, re-parenthesized subtraction chains, the multiplication/division interchanges, and unrolling known integer powers into multiplications;finite_math: the zero identities x + 0 = x, 0 - x = -x and 0 * x = 0, which hold only for finite operands and ignoring the sign of zero.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.
include Ppx_compare_lib.Equal.S with type t := tval equal : t Base__Ppx_compare_lib.equalinclude Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareval exact : tNo licence: only exact rewrites.
val all : tval of_config : Base.unit -> tThe configured licences: the keys fp_contract, fp_reassociate and fp_finite_math.
val fields : t -> (Base.string * Base.bool) Base.listEach licence under its config key, for reports.