sig
  type work
  exception Abnormal of float * string
  type print = No | Last | Every of int | Details | All | Full
  type state
  module F :
    sig
      type vec =
          (float, Bigarray.float64_elt, Bigarray.fortran_layout)
          Bigarray.Array1.t
      val min :
        ?print:Lbfgs.print ->
        ?work:Lbfgs.work ->
        ?nsteps:int ->
        ?stop:(Lbfgs.state -> bool) ->
        ?corrections:int ->
        ?factr:float ->
        ?pgtol:float ->
        ?n:int ->
        ?ofsl:int ->
        ?l:Lbfgs.F.vec ->
        ?ofsu:int ->
        ?u:Lbfgs.F.vec ->
        (Lbfgs.F.vec -> Lbfgs.F.vec -> float) ->
        ?ofsx:int -> Lbfgs.F.vec -> float
      val max :
        ?print:Lbfgs.print ->
        ?work:Lbfgs.work ->
        ?nsteps:int ->
        ?stop:(Lbfgs.state -> bool) ->
        ?corrections:int ->
        ?factr:float ->
        ?pgtol:float ->
        ?n:int ->
        ?ofsl:int ->
        ?l:Lbfgs.F.vec ->
        ?ofsu:int ->
        ?u:Lbfgs.F.vec ->
        (Lbfgs.F.vec -> Lbfgs.F.vec -> float) ->
        ?ofsx:int -> Lbfgs.F.vec -> float
    end
  module C :
    sig
      type vec =
          (float, Bigarray.float64_elt, Bigarray.c_layout) Bigarray.Array1.t
      val min :
        ?print:Lbfgs.print ->
        ?work:Lbfgs.work ->
        ?nsteps:int ->
        ?stop:(Lbfgs.state -> bool) ->
        ?corrections:int ->
        ?factr:float ->
        ?pgtol:float ->
        ?n:int ->
        ?ofsl:int ->
        ?l:Lbfgs.C.vec ->
        ?ofsu:int ->
        ?u:Lbfgs.C.vec ->
        (Lbfgs.C.vec -> Lbfgs.C.vec -> float) ->
        ?ofsx:int -> Lbfgs.C.vec -> float
      val max :
        ?print:Lbfgs.print ->
        ?work:Lbfgs.work ->
        ?nsteps:int ->
        ?stop:(Lbfgs.state -> bool) ->
        ?corrections:int ->
        ?factr:float ->
        ?pgtol:float ->
        ?n:int ->
        ?ofsl:int ->
        ?l:Lbfgs.C.vec ->
        ?ofsu:int ->
        ?u:Lbfgs.C.vec ->
        (Lbfgs.C.vec -> Lbfgs.C.vec -> float) ->
        ?ofsx:int -> Lbfgs.C.vec -> float
    end
  val work : ?corrections:int -> int -> Lbfgs.work
  val is_constrained : Lbfgs.state -> bool
  val nintervals : Lbfgs.state -> int
  val nskipped_updates : Lbfgs.state -> int
  val iter : Lbfgs.state -> int
  val nupdates : Lbfgs.state -> int
  val nintervals_current : Lbfgs.state -> int
  val neval : Lbfgs.state -> int
  val neval_current : Lbfgs.state -> int
  val previous_f : Lbfgs.state -> float
  val norm_dir : Lbfgs.state -> float
  val eps : Lbfgs.state -> float
  val time_cauchy : Lbfgs.state -> float
  val time_subspace_min : Lbfgs.state -> float
  val time_line_search : Lbfgs.state -> float
  val slope : Lbfgs.state -> float
  val slope_init : Lbfgs.state -> float
  val normi_grad : Lbfgs.state -> float
end