sig
  type kind = HYBRIDSJ | HYBRIDJ | NEWTON | GNEWTON
  type t
  val make :
    Gsl_multiroot.Deriv.kind ->
    int ->
    Gsl_fun.multi_fun_fdf -> Gsl_vector.vector -> Gsl_multiroot.Deriv.t
  external name : Gsl_multiroot.Deriv.t -> string
    = "ml_gsl_multiroot_fdfsolver_name"
  external iterate : Gsl_multiroot.Deriv.t -> unit
    = "ml_gsl_multiroot_fdfsolver_iterate"
  external root : Gsl_multiroot.Deriv.t -> Gsl_vector.vector -> unit
    = "ml_gsl_multiroot_fdfsolver_root"
  external get_state :
    Gsl_multiroot.Deriv.t ->
    ?x:Gsl_vector.vector ->
    ?f:Gsl_vector.vector ->
    ?j:Gsl_matrix.matrix -> ?dx:Gsl_vector.vector -> unit -> unit
    = "ml_gsl_multiroot_fdfsolver_get_state_bc"
    "ml_gsl_multiroot_fdfsolver_get_state"
  external test_delta :
    Gsl_multiroot.Deriv.t -> epsabs:float -> epsrel:float -> bool
    = "ml_gsl_multiroot_test_delta_fdf"
  external test_residual : Gsl_multiroot.Deriv.t -> epsabs:float -> bool
    = "ml_gsl_multiroot_test_residual_fdf"
end