sig
  type kind = BISECTION | FALSEPOS | BRENT
  type t
  val make :
    Root.Bracket.kind -> Fun.gsl_fun -> float -> float -> Root.Bracket.t
  external name : Root.Bracket.t -> string = "ml_gsl_root_fsolver_name"
  external iterate : Root.Bracket.t -> unit = "ml_gsl_root_fsolver_iterate"
  external root : Root.Bracket.t -> float = "ml_gsl_root_fsolver_root"
  external interval : Root.Bracket.t -> float * float
    = "ml_gsl_root_fsolver_x_interv"
end