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