sig
  type integrator = GAUSS15 | GAUSS21 | GAUSS31 | GAUSS41 | GAUSS51 | GAUSS61
  type reliability = OK | Limit | Roundoff | Bad_integrand
  type result = {
    res : float;
    err : float;
    neval : int;
    nsub : int;
    msg : Integration1D.reliability;
  }
  exception Function_returns_NaN of float * string
  type workspace
  val workspace : Integration1D.integrator -> int -> Integration1D.workspace
  val qag :
    ?limit:int ->
    ?workspace:Integration1D.workspace ->
    Integration1D.integrator ->
    ?epsabs:float ->
    ?epsrel:float ->
    (float -> float) -> float -> float -> Integration1D.result
  val simp_adapt :
    ?fh:Pervasives.out_channel ->
    ?tol:float ->
    ?hmin:float -> (float -> float) -> float -> float -> float * float
end