functor (Base : NUMERIC_BASE->
  sig
    type t = Base.t
    val zero : t
    val one : t
    val neg : t -> t
    val abs : t -> t
    val add : t -> t -> t
    val sub : t -> t -> t
    val mul : t -> t -> t
    val div : t -> t -> t
    val modulo : t -> t -> t
    val pow : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val ord : t BatOrd.ord
    val of_int : int -> t
    val to_int : t -> int
    val of_float : float -> t
    val to_float : t -> float
    val of_string : string -> t
    val to_string : t -> string
    val operations : t numeric
    type discrete = t
    val succ : t -> t
    val pred : t -> t
    module Infix :
      sig
        type bat__infix_t = t
        val ( + ) : bat__infix_t -> bat__infix_t -> bat__infix_t
        val ( - ) : bat__infix_t -> bat__infix_t -> bat__infix_t
        val ( * ) : bat__infix_t -> bat__infix_t -> bat__infix_t
        val ( / ) : bat__infix_t -> bat__infix_t -> bat__infix_t
        val ( ** ) : bat__infix_t -> bat__infix_t -> bat__infix_t
        val ( -- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t
        val ( --- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t
      end
    module Compare :
      sig
        type bat__compare_t = t
        val ( <> ) : bat__compare_t -> bat__compare_t -> bool
        val ( >= ) : bat__compare_t -> bat__compare_t -> bool
        val ( <= ) : bat__compare_t -> bat__compare_t -> bool
        val ( > ) : bat__compare_t -> bat__compare_t -> bool
        val ( < ) : bat__compare_t -> bat__compare_t -> bool
        val ( = ) : bat__compare_t -> bat__compare_t -> bool
      end
    type bat__infix_t = t
    val ( + ) : bat__infix_t -> bat__infix_t -> bat__infix_t
    val ( - ) : bat__infix_t -> bat__infix_t -> bat__infix_t
    val ( * ) : bat__infix_t -> bat__infix_t -> bat__infix_t
    val ( / ) : bat__infix_t -> bat__infix_t -> bat__infix_t
    val ( ** ) : bat__infix_t -> bat__infix_t -> bat__infix_t
    val ( -- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t
    val ( --- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t
    type bat__refops_t = t
    val ( += ) : bat__refops_t ref -> bat__refops_t -> unit
    val ( -= ) : bat__refops_t ref -> bat__refops_t -> unit
    val ( *= ) : bat__refops_t ref -> bat__refops_t -> unit
    val ( /= ) : bat__refops_t ref -> bat__refops_t -> unit
  end