sig
  type kind =
      CONJUGATE_FR
    | CONJUGATE_PR
    | VECTOR_BFGS
    | VECTOR_BFGS2
    | 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