sig
  module Num : Numeric_S
  type a = Num.t
  type c = Bounding_box_intf.S.a * Bounding_box_intf.S.a
  type t = Bounding_box_intf.S.c * Bounding_box_intf.S.c
  val empty : Bounding_box_intf.S.t
  val area : Bounding_box_intf.S.t -> Bounding_box_intf.S.a
  val overlaps : Bounding_box_intf.S.t -> Bounding_box_intf.S.t -> bool
  val union :
    Bounding_box_intf.S.t -> Bounding_box_intf.S.t -> Bounding_box_intf.S.t
  val union_many : Bounding_box_intf.S.t list -> Bounding_box_intf.S.t
  val delta :
    Bounding_box_intf.S.t -> Bounding_box_intf.S.t -> Bounding_box_intf.S.a
  val distance :
    Bounding_box_intf.S.t -> Bounding_box_intf.S.t -> Bounding_box_intf.S.a
end