sig
  type integer
  and real
  module type Ops =
    sig
      type t
      and num_type
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  module IntOps :
    sig
      type t = int
      and num_type = integer
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  module Int32Ops :
    sig
      type t = int32
      and num_type = integer
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  module Int64Ops :
    sig
      type t = int64
      and num_type = integer
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  module NativeOps :
    sig
      type t = nativeint
      and num_type = integer
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  module FloatOps :
    sig
      type t = float
      and num_type = real
      val add : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val sub : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val succ : Math.Ops.t -> Math.Ops.t
      val pred : Math.Ops.t -> Math.Ops.t
      val mul : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val div : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val rem : Math.Ops.t -> Math.Ops.t -> Math.Ops.t
      val abs : Math.Ops.t -> Math.Ops.t
      val zero : Math.Ops.t
      val one : Math.Ops.t
      val min : Math.Ops.t
      val max : Math.Ops.t
      val print : Pervasives.out_channel -> Math.Ops.t -> unit
      val to_float : Math.Ops.t -> float
      val of_float : float -> Math.Ops.t
    end
  val succ_float : float -> float
  val pred_float : float -> float
  val fcmp : epsilon:float -> float -> float -> int
  val isfinite : float -> bool
  val isinf : float -> bool
  val isnan : float -> bool
  val isnormal : float -> bool
  val iszero : float -> bool
  external fma : float -> float -> float -> float = "stew_fma" "fma" "float"
  external fdim : float -> float -> float = "stew_fdim" "fdim" "float"
  external nextafter : float -> float -> float = "stew_nextafter" "nextafter"
    "float"
  external remainder : float -> float -> float = "stew_remainder" "remainder"
    "float"
  external trunc : float -> float = "stew_trunc" "trunc" "float"
  external round : float -> float = "stew_round" "round" "float"
  external nearbyint : float -> float = "stew_nearbyint" "nearbyint" "float"
  external tgamma : float -> float = "stew_tgamma" "tgamma" "float"
  external lgamma : float -> float = "stew_lgamma" "lgamma" "float"
  external erfc : float -> float = "stew_erfc" "erfc" "float"
  external erf : float -> float = "stew_erf" "erf" "float"
  external hypot : float -> float -> float = "stew_hypot" "hypot" "float"
  external cbrt : float -> float = "stew_cbrt" "cbrt" "float"
  external scalbn : float -> int -> float = "stew_scalbn"
  external logb : float -> float = "stew_logb" "logb" "float"
  external log2 : float -> float = "stew_log2" "log2" "float"
  external log1p : float -> float = "stew_log1p" "log1p" "float"
  external ilogb : float -> int = "stew_ilogb"
  external expm1 : float -> float = "stew_expm1" "expm1" "float"
  external exp2 : float -> float = "stew_exp2" "exp2" "float"
  external atanh : float -> float = "stew_atanh" "atanh" "float"
  external asinh : float -> float = "stew_asinh" "asinh" "float"
  external acosh : float -> float = "stew_acosh" "acosh" "float"
  val e : float
  val log2e : float
  val log10e : float
  val ln2 : float
  val ln10 : float
  val pi : float
  val pi2 : float
  val pi4 : float
  val invpi : float
  val invpi2 : float
  val sqrtpi2 : float
  val sqrt2 : float
  val invsqrt2 : float
end