sig
  module NoDeriv :
    sig
      type kind = HYBRIDS | HYBRID | DNEWTON | BROYDEN
      type t
      val make :
        Gsl_multiroot.NoDeriv.kind ->
        int ->
        Gsl_fun.multi_fun -> Gsl_vector.vector -> Gsl_multiroot.NoDeriv.t
      external name : Gsl_multiroot.NoDeriv.t -> string
        = "ml_gsl_multiroot_fsolver_name"
      external iterate : Gsl_multiroot.NoDeriv.t -> unit
        = "ml_gsl_multiroot_fsolver_iterate"
      external root : Gsl_multiroot.NoDeriv.t -> Gsl_vector.vector -> unit
        = "ml_gsl_multiroot_fsolver_root"
      external get_state :
        Gsl_multiroot.NoDeriv.t ->
        ?x:Gsl_vector.vector ->
        ?f:Gsl_vector.vector -> ?dx:Gsl_vector.vector -> unit -> unit
        = "ml_gsl_multiroot_fsolver_get_state"
      external test_delta :
        Gsl_multiroot.NoDeriv.t -> epsabs:float -> epsrel:float -> bool
        = "ml_gsl_multiroot_test_delta_f"
      external test_residual :
        Gsl_multiroot.NoDeriv.t -> epsabs:float -> bool
        = "ml_gsl_multiroot_test_residual_f"
    end
  module Deriv :
    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
end