sig
  type lbfgs_err =
      Success
    | Stop
    | AlreadyMinimized
    | UnknownError
    | LogicError
    | OutOfMemory
    | Canceled
    | InvalidN
    | InvalidNSSE
    | InvalidXSSE
    | InvalidEpsilon
    | InvalidTestPeriod
    | InvalidDelta
    | InvalidLinesearch
    | InvalidMinstep
    | InvalidMaxstep
    | InvalidFtol
    | InvalidWolfe
    | InvalidGtol
    | InvalidXtol
    | InvalidMaxLinesearch
    | InvalidOrthantwise
    | InvalidOrthantwiseStart
    | InvalidOrthantwiseEnd
    | OutOfInterval
    | IncorrectTminmax
    | RoundingError
    | MinimumStep
    | MaximumStep
    | MaximumLinesearch
    | MaximumIteration
    | WidthTooSmall
    | InvalidParameters
    | IncreaseGradient
  val errstring : Lbfgs.lbfgs_err -> string
  type valgrad_func = float array -> float array -> float
  val minimize_l1 :
    float ->
    Lbfgs.valgrad_func ->
    float array -> float -> int -> Lbfgs.lbfgs_err * float
  val minimize_l1_simple :
    float -> Lbfgs.valgrad_func -> float array -> Lbfgs.lbfgs_err * float
  val minimize :
    Lbfgs.valgrad_func ->
    float array -> float -> int -> Lbfgs.lbfgs_err * float
  val minimize_simple :
    Lbfgs.valgrad_func -> float array -> Lbfgs.lbfgs_err * float
end