sig
  type 'd bquadrhsfn_args = {
    t : float;
    y : 'd;
    y' : 'd;
    yb : 'd;
    yb' : 'd;
  }
  type 'd bquadrhsfn_no_sens =
      'Idas.Adjoint.Quadrature.bquadrhsfn_args -> '-> unit
  type 'd bquadrhsfn_with_sens =
      'Idas.Adjoint.Quadrature.bquadrhsfn_args ->
      'd array -> 'd array -> '-> unit
  type 'd bquadrhsfn =
      NoSens of 'Idas.Adjoint.Quadrature.bquadrhsfn_no_sens
    | WithSens of 'Idas.Adjoint.Quadrature.bquadrhsfn_with_sens
  val init :
    ('d, 'k) Idas.Adjoint.bsession ->
    'Idas.Adjoint.Quadrature.bquadrhsfn -> ('d, 'k) Nvector.t -> unit
  val reinit : ('d, 'k) Idas.Adjoint.bsession -> ('d, 'k) Nvector.t -> unit
  type ('d, 'k) tolerance =
      NoStepSizeControl
    | SStolerances of float * float
    | SVtolerances of float * ('d, 'k) Nvector.t
  val set_tolerances :
    ('d, 'k) Idas.Adjoint.bsession ->
    ('d, 'k) Idas.Adjoint.Quadrature.tolerance -> unit
  val get : ('d, 'k) Idas.Adjoint.bsession -> ('d, 'k) Nvector.t -> float
  val get_num_rhs_evals : ('d, 'k) Idas.Adjoint.bsession -> int
  val get_num_err_test_fails : ('d, 'k) Idas.Adjoint.bsession -> int
  val get_err_weights :
    ('d, 'k) Idas.Adjoint.bsession -> ('d, 'k) Nvector.t -> unit
  val get_stats : ('d, 'k) Idas.Adjoint.bsession -> int * int
end