`sig
module type T =
sig
type t
val of_float : float -> t
val to_float : t -> float
val of_string : string -> t
val to_string : t -> string
val ( + ) : Int_math.T.t -> Int_math.T.t -> Int_math.T.t
val ( - ) : Int_math.T.t -> Int_math.T.t -> Int_math.T.t
val ( * ) : Int_math.T.t -> Int_math.T.t -> Int_math.T.t
val ( / ) : Int_math.T.t -> Int_math.T.t -> Int_math.T.t
val ( ~- ) : Int_math.T.t -> Int_math.T.t
val ( >= ) : t -> t -> bool
val ( <= ) : t -> t -> bool
val ( = ) : t -> t -> bool
val ( > ) : t -> t -> bool
val ( < ) : t -> t -> bool
val ( <> ) : t -> t -> bool
val abs : Int_math.T.t -> Int_math.T.t
val neg : Int_math.T.t -> Int_math.T.t
val zero : Int_math.T.t
val of_int_exn : int -> Int_math.T.t
val rem : Int_math.T.t -> Int_math.T.t -> Int_math.T.t
end
module Make :
functor (X : T) ->
sig
val ( % ) : X.t -> X.t -> X.t
val ( /% ) : X.t -> X.t -> X.t
val ( // ) : X.t -> X.t -> float
val round :
?dir:[ `Down | `Nearest | `Up | `Zero ] ->
X.t -> to_multiple_of:X.t -> X.t
val round_towards_zero : X.t -> to_multiple_of:X.t -> X.t
val round_down : X.t -> to_multiple_of:X.t -> X.t
val round_up : X.t -> to_multiple_of:X.t -> X.t
val round_nearest : X.t -> to_multiple_of:X.t -> X.t
end
val int_pow : int -> int -> int
val int64_pow : int64 -> int64 -> int64
end`