sig   type t = float   val zero : float   val one : float   external neg : float -> float = "%negfloat"   val succ : float -> float   val pred : float -> float   external abs : float -> float = "%absfloat"   val add : float -> float -> float   val sub : float -> float -> float   val mul : float -> float -> float   val div : float -> float -> float   external modulo : float -> float -> float = "caml_fmod_float" "fmod"     [@@unboxed] [@@noalloc]   external pow : float -> float -> float = "caml_power_float" "pow"     [@@unboxed] [@@noalloc]   val min_num : float   val max_num : float   val compare : float -> float -> int   val equal : float -> float -> bool   val ord : float -> float -> BatOrd.order   external of_int : int -> float = "%floatofint"   external to_int : float -> int = "%intoffloat"   external of_float : float -> float = "%identity"   external to_float : float -> float = "%identity"   val of_string : string -> float   val to_string : float -> string   external ( + ) : BatFloat.t -> BatFloat.t -> BatFloat.t = "%addfloat"   external ( - ) : BatFloat.t -> BatFloat.t -> BatFloat.t = "%subfloat"   external ( * ) : BatFloat.t -> BatFloat.t -> BatFloat.t = "%mulfloat"   external ( / ) : BatFloat.t -> BatFloat.t -> BatFloat.t = "%divfloat"   external ( ** ) : BatFloat.t -> BatFloat.t -> BatFloat.t     = "caml_power_float" "pow" [@@unboxed] [@@noalloc]   val min : float -> float -> float   val max : float -> float -> float   val ( -- ) : BatFloat.t -> BatFloat.t -> BatFloat.t BatEnum.t   val ( --- ) : BatFloat.t -> BatFloat.t -> BatFloat.t BatEnum.t   val operations : BatFloat.t BatNumber.numeric   external sqrt : float -> float = "caml_sqrt_float" "sqrt" [@@unboxed]     [@@noalloc]   external exp : float -> float = "caml_exp_float" "exp" [@@unboxed]     [@@noalloc]   external log : float -> float = "caml_log_float" "log" [@@unboxed]     [@@noalloc]   external log10 : float -> float = "caml_log10_float" "log10" [@@unboxed]     [@@noalloc]   external cos : float -> float = "caml_cos_float" "cos" [@@unboxed]     [@@noalloc]   external sin : float -> float = "caml_sin_float" "sin" [@@unboxed]     [@@noalloc]   external tan : float -> float = "caml_tan_float" "tan" [@@unboxed]     [@@noalloc]   external acos : float -> float = "caml_acos_float" "acos" [@@unboxed]     [@@noalloc]   external asin : float -> float = "caml_asin_float" "asin" [@@unboxed]     [@@noalloc]   external atan : float -> float = "caml_atan_float" "atan" [@@unboxed]     [@@noalloc]   external atan2 : float -> float -> float = "caml_atan2_float" "atan2"     [@@unboxed] [@@noalloc]   external cosh : float -> float = "caml_cosh_float" "cosh" [@@unboxed]     [@@noalloc]   external sinh : float -> float = "caml_sinh_float" "sinh" [@@unboxed]     [@@noalloc]   external tanh : float -> float = "caml_tanh_float" "tanh" [@@unboxed]     [@@noalloc]   external ceil : float -> float = "caml_ceil_float" "ceil" [@@unboxed]     [@@noalloc]   external floor : float -> float = "caml_floor_float" "floor" [@@unboxed]     [@@noalloc]   val round : float -> float   val round_to_int : float -> int   val round_to_string : ?digits:int -> float -> string   val root : float -> int -> float   val signbit : float -> bool   val copysign : float -> float -> float   val is_nan : float -> bool   val is_special : float -> bool   val is_finite : float -> bool   val infinity : float   val neg_infinity : float   val nan : float   val epsilon : float   val e : float   val log2e : float   val log10e : float   val ln2 : float   val ln10 : float   val pi : float   val pi2 : float   val pi4 : float   val invpi : float   val invpi2 : float   val sqrtpi2 : float   val sqrt2 : float   val invsqrt2 : float   external frexp : float -> float * int = "caml_frexp_float"   external ldexp : float -> int -> float = "caml_ldexp_float"   external modf : float -> float * float = "caml_modf_float"   type fpkind =     Pervasives.fpclass =       FP_normal     | FP_subnormal     | FP_zero     | FP_infinite     | FP_nan   external classify : float -> BatFloat.fpkind = "caml_classify_float"   val approx_equal : ?epsilon:float -> float -> float -> bool   module Infix :     sig       type bat__infix_t = t       val ( + ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( - ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( * ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( / ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( ** ) : bat__infix_t -> bat__infix_t -> bat__infix_t       val ( -- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t       val ( --- ) : bat__infix_t -> bat__infix_t -> bat__infix_t BatEnum.t       val ( =~ ) : ?epsilon:float -> float -> float -> bool     end   module Compare :     sig       type bat__compare_t = t       val ( <> ) : bat__compare_t -> bat__compare_t -> bool       val ( >= ) : bat__compare_t -> bat__compare_t -> bool       val ( <= ) : bat__compare_t -> bat__compare_t -> bool       val ( > ) : bat__compare_t -> bat__compare_t -> bool       val ( < ) : bat__compare_t -> bat__compare_t -> bool       val ( = ) : bat__compare_t -> bat__compare_t -> bool     end   type bat__refops_t = t   val ( += ) : bat__refops_t ref -> bat__refops_t -> unit   val ( -= ) : bat__refops_t ref -> bat__refops_t -> unit   val ( *= ) : bat__refops_t ref -> bat__refops_t -> unit   val ( /= ) : bat__refops_t ref -> bat__refops_t -> unit   val print : (BatFloat.t, 'a) BatIO.printer   module Safe_float :     sig       type t = float       val zero : float       val one : float       val neg : float -> float       val succ : float -> float       val pred : float -> float       val abs : float -> float       val add : float -> float -> float       val sub : float -> float -> float       val mul : float -> float -> float       val div : float -> float -> float       val modulo : float -> float -> float       val pow : float -> float -> float       val min_num : float       val max_num : float       val compare : float -> float -> int       val of_int : int -> float       val to_int : float -> int       external of_float : float -> float = "%identity"       external to_float : float -> float = "%identity"       val of_string : string -> float       val to_string : float -> string       val ( + ) :         BatFloat.Safe_float.t ->         BatFloat.Safe_float.t -> BatFloat.Safe_float.t       val ( - ) :         BatFloat.Safe_float.t ->         BatFloat.Safe_float.t -> BatFloat.Safe_float.t       val ( * ) :         BatFloat.Safe_float.t ->         BatFloat.Safe_float.t -> BatFloat.Safe_float.t       val ( / ) :         BatFloat.Safe_float.t ->         BatFloat.Safe_float.t -> BatFloat.Safe_float.t       val ( ** ) :         BatFloat.Safe_float.t ->         BatFloat.Safe_float.t -> BatFloat.Safe_float.t       val operations : BatFloat.Safe_float.t BatNumber.numeric       val exp : float -> float       val log : float -> float       val log10 : float -> float       val cos : float -> float       val sin : float -> float       val tan : float -> float       val acos : float -> float       val asin : float -> float       val atan : float -> float       val atan2 : float -> float -> float       val cosh : float -> float       val sinh : float -> float       val tanh : float -> float       val ceil : float -> float       val floor : float -> float       val infinity : float       val neg_infinity : float       val nan : float       val is_nan : float -> bool       val epsilon : float       val pi : float       val frexp : float -> float * int       val ldexp : float -> int -> float       val modf : float -> float * float       type fpkind =         Pervasives.fpclass =           FP_normal         | FP_subnormal         | FP_zero         | FP_infinite         | FP_nan       external classify : float -> BatFloat.Safe_float.fpkind         = "caml_classify_float"       val print : 'BatInnerIO.output -> BatFloat.Safe_float.t -> unit     end end