sig
  type integer
  and real
  module type Ops =
    sig
      type t
      and num_type
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module IntOps :
    sig
      type t = int
      and num_type = integer
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module Int32Ops :
    sig
      type t = int32
      and num_type = integer
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module Int64Ops :
    sig
      type t = int64
      and num_type = integer
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module NativeOps :
    sig
      type t = nativeint
      and num_type = integer
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module FloatOps :
    sig
      type t = float
      and num_type = real
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
  module ComplexOps :
    sig
      type t = Complex.t
      and num_type = real
      val add : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val sub : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val succ : Genops.Ops.t -> Genops.Ops.t
      val pred : Genops.Ops.t -> Genops.Ops.t
      val mul : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val div : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val rem : Genops.Ops.t -> Genops.Ops.t -> Genops.Ops.t
      val abs : Genops.Ops.t -> Genops.Ops.t
      val zero : Genops.Ops.t
      val one : Genops.Ops.t
      val min : Genops.Ops.t
      val max : Genops.Ops.t
      val print : Pervasives.out_channel -> Genops.Ops.t -> unit
      val to_float : Genops.Ops.t -> float
      val of_float : float -> Genops.Ops.t
    end
end