sig
  type ieee_type = NAN | INF | NORMAL | DENORMAL | ZERO
  and float_rep = {
    sign : int;
    mantissa : string;
    exponent : int;
    ieee_type : Gsl_ieee.ieee_type;
  } 
  external rep_of_float : float -> Gsl_ieee.float_rep
    = "ml_gsl_ieee_double_to_rep"
  type precision = SINGLE | DOUBLE | EXTENDED
  and rounding = TO_NEAREST | DOWN | UP | TO_ZERO
  and exceptions =
      INVALID
    | DENORMALIZED
    | DIVISION_BY_ZERO
    | OVERFLOW
    | UNDERFLOW
    | ALL
    | INEXACT
  external set_mode :
    Gsl_ieee.precision ->
    Gsl_ieee.rounding -> Gsl_ieee.exceptions list -> unit
    = "ml_gsl_ieee_set_mode"
  external env_setup : unit -> unit = "ml_gsl_ieee_env_setup"
  val print : float -> string
end