sig
  type t = float
  type fpclass =
    Pervasives.fpclass =
      FP_normal
    | FP_subnormal
    | FP_zero
    | FP_infinite
    | FP_nan
  val nan : CCFloat.t
  val max_value : CCFloat.t
  val min_value : CCFloat.t
  val max_finite_value : CCFloat.t
  val epsilon : CCFloat.t
  val is_nan : CCFloat.t -> bool
  val add : CCFloat.t -> CCFloat.t -> CCFloat.t
  val sub : CCFloat.t -> CCFloat.t -> CCFloat.t
  val neg : CCFloat.t -> CCFloat.t
  val abs : CCFloat.t -> CCFloat.t
  val scale : CCFloat.t -> CCFloat.t -> CCFloat.t
  val min : CCFloat.t -> CCFloat.t -> CCFloat.t
  val max : CCFloat.t -> CCFloat.t -> CCFloat.t
  val equal : CCFloat.t -> CCFloat.t -> bool
  val compare : CCFloat.t -> CCFloat.t -> int
  type 'a printer = Format.formatter -> '-> unit
  type 'a random_gen = Random.State.t -> 'a
  val pp : CCFloat.t CCFloat.printer
  val hash : CCFloat.t -> int
  val random : CCFloat.t -> CCFloat.t CCFloat.random_gen
  val random_small : CCFloat.t CCFloat.random_gen
  val random_range : CCFloat.t -> CCFloat.t -> CCFloat.t CCFloat.random_gen
  val fsign : CCFloat.t -> CCFloat.t
  val round : CCFloat.t -> CCFloat.t
  exception TrapNaN of string
  val sign_exn : CCFloat.t -> int
  val to_int : CCFloat.t -> int
  val of_int : int -> CCFloat.t
  val to_string : CCFloat.t -> string
  val of_string_exn : string -> CCFloat.t
  val of_string : string -> CCFloat.t
  val equal_precision : epsilon:CCFloat.t -> CCFloat.t -> CCFloat.t -> bool
  val classify : CCFloat.t -> CCFloat.fpclass
  module Infix :
    sig
      val ( = ) : CCFloat.t -> CCFloat.t -> bool
      val ( <> ) : CCFloat.t -> CCFloat.t -> bool
      val ( < ) : CCFloat.t -> CCFloat.t -> bool
      val ( > ) : CCFloat.t -> CCFloat.t -> bool
      val ( <= ) : CCFloat.t -> CCFloat.t -> bool
      val ( >= ) : CCFloat.t -> CCFloat.t -> bool
    end
  val ( = ) : t -> t -> bool
  val ( <> ) : t -> t -> bool
  val ( < ) : t -> t -> bool
  val ( > ) : t -> t -> bool
  val ( <= ) : t -> t -> bool
  val ( >= ) : t -> t -> bool
end