(** Latitude module *) type t (** {2 Construction} *) val create : float -> t (** Raises Error.Coordinate_error if outside [-90, 90] *) val of_dms : degree:int -> minute:int -> second:float -> t val unsafe_create : float -> t (** No validation - use with caution *) val clamp : float -> t (** Clamp to valid range [-90, 90] *) (** {2 Accessors} *) val to_float : t -> float val degree : t -> int val minute : t -> int val second : t -> float val decimal_minute : t -> float val hemisphere : t -> [`N | `S] (** {2 Operations} *) val add : t -> float -> t val sub : t -> float -> t val neg : t -> t val abs : t -> float (** {2 Comparison} *) val equal : t -> t -> bool val compare : t -> t -> int val ( = ) : t -> t -> bool val ( < ) : t -> t -> bool val ( > ) : t -> t -> bool val ( <= ) : t -> t -> bool val ( >= ) : t -> t -> bool (** {2 Validation} *) val is_valid : float -> bool (** {2 Formatting} *) val to_string : t -> string (** Decimal degrees *) val format : ?precision:int -> t -> string (** With specified precision (default 6) *) val to_dms_string : t -> string (** Format as "DD°MM'SS.S\"N" *)