sig
  type u =
      Metre
    | Second
    | Minute
    | Mole
    | Gram
    | Litre
    | Amp
    | Kelvin
    | Candela
    | Tera of SIunits.Unit.u
    | Giga of SIunits.Unit.u
    | Mega of SIunits.Unit.u
    | Kilo of SIunits.Unit.u
    | Deci of SIunits.Unit.u
    | Centi of SIunits.Unit.u
    | Milli of SIunits.Unit.u
    | Micro of SIunits.Unit.u
    | Nano of SIunits.Unit.u
    | Pico of SIunits.Unit.u
    | Femto of SIunits.Unit.u
    | Power of SIunits.Unit.u * int
  type d =
      Ratio of SIunits.Unit.u list * SIunits.Unit.u list
    | Per of SIunits.Unit.u list
    | In of SIunits.Unit.u list
    | NoUnits
  type t
  val create : ?scale:float -> SIunits.Unit.d -> SIunits.Unit.t
  val scale : float -> SIunits.Unit.t -> SIunits.Unit.t
  val no_units : SIunits.Unit.t
  val in_units : SIunits.Unit.u list -> SIunits.Unit.t
  val per : SIunits.Unit.u list -> SIunits.Unit.t
  val ratio : SIunits.Unit.u list -> SIunits.Unit.u list -> SIunits.Unit.t
  val mult : SIunits.Unit.t -> SIunits.Unit.t -> SIunits.Unit.t
  val ( %* ) : SIunits.Unit.t -> SIunits.Unit.t -> SIunits.Unit.t
  val div : SIunits.Unit.t -> SIunits.Unit.t -> SIunits.Unit.t
  val ( %/ ) : SIunits.Unit.t -> SIunits.Unit.t -> SIunits.Unit.t
  val dimensions_of : SIunits.Unit.t -> SIunits.Unit.d
  val scale_of : SIunits.Unit.t -> float
  val eq : SIunits.Unit.t -> SIunits.Unit.t -> bool
  val ( %= ) : SIunits.Unit.t -> SIunits.Unit.t -> bool
  val to_string : SIunits.Unit.t -> string
end