sig
  type kind = CONJUGATE_FR | CONJUGATE_PR | VECTOR_BFGS | STEEPEST_DESCENT
  type t
  val make :
    Gsl_multimin.Deriv.kind ->
    int ->
    Gsl_fun.multim_fun_fdf ->
    x:Gsl_vector.vector -> step:float -> tol:float -> Gsl_multimin.Deriv.t
  external name : Gsl_multimin.Deriv.t -> string
    = "ml_gsl_multimin_fdfminimizer_name"
  external iterate : Gsl_multimin.Deriv.t -> unit
    = "ml_gsl_multimin_fdfminimizer_iterate"
  external restart : Gsl_multimin.Deriv.t -> unit
    = "ml_gsl_multimin_fdfminimizer_restart"
  external minimum :
    ?x:Gsl_vector.vector ->
    ?dx:Gsl_vector.vector ->
    ?g:Gsl_vector.vector -> Gsl_multimin.Deriv.t -> float
    = "ml_gsl_multimin_fdfminimizer_minimum"
  external test_gradient : Gsl_multimin.Deriv.t -> float -> bool
    = "ml_gsl_multimin_test_gradient"
end