sig
  external qng :
    Gsl_fun.gsl_fun ->
    a:float -> b:float -> epsabs:float -> epsrel:float -> float * float * int
    = "ml_gsl_integration_qng"
  type workspace
  val make_ws : int -> Gsl_integration.workspace
  external size : Gsl_integration.workspace -> int
    = "ml_gsl_integration_ws_size"
  type key = GAUSS15 | GAUSS21 | GAUSS31 | GAUSS41 | GAUSS51 | GAUSS61
  external qag :
    Gsl_fun.gsl_fun ->
    a:float ->
    b:float ->
    epsabs:float ->
    epsrel:float ->
    ?limit:int ->
    Gsl_integration.key -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qag_bc" "ml_gsl_integration_qag"
  external qags :
    Gsl_fun.gsl_fun ->
    a:float ->
    b:float ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qags_bc" "ml_gsl_integration_qags"
  external qagp :
    Gsl_fun.gsl_fun ->
    pts:float array ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qagp_bc" "ml_gsl_integration_qagp"
  external qagi :
    Gsl_fun.gsl_fun ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qagi"
  external qagiu :
    Gsl_fun.gsl_fun ->
    a:float ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qagiu_bc" "ml_gsl_integration_qagiu"
  external qagil :
    Gsl_fun.gsl_fun ->
    b:float ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qagil_bc" "ml_gsl_integration_qagil"
  val qag_sing :
    Gsl_fun.gsl_fun ->
    a:float ->
    b:float ->
    ?pts:float array ->
    ?limit:int -> epsabs:float -> epsrel:float -> unit -> Gsl_fun.result
  external qawc :
    Gsl_fun.gsl_fun ->
    a:float ->
    b:float ->
    c:float ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qawc_bc" "ml_gsl_integration_qawc"
  type qaws_table
  external alloc_qaws :
    alpha:float ->
    beta:float -> mu:int -> nu:int -> Gsl_integration.qaws_table
    = "ml_gsl_integration_qaws_table_alloc"
  external set_qaws :
    Gsl_integration.qaws_table ->
    alpha:float -> beta:float -> mu:int -> nu:int -> unit
    = "ml_gsl_integration_qaws_table_set"
  external free_qaws : Gsl_integration.qaws_table -> unit
    = "ml_gsl_integration_qaws_table_free"
  external qaws :
    Gsl_fun.gsl_fun ->
    a:float ->
    b:float ->
    Gsl_integration.qaws_table ->
    epsabs:float ->
    epsrel:float -> ?limit:int -> Gsl_integration.workspace -> Gsl_fun.result
    = "ml_gsl_integration_qaws_bc" "ml_gsl_integration_qaws"
  type qawo_table
  type qawo_sine = QAWO_COSINE | QAWO_SINE
  external alloc_qawo :
    omega:float ->
    l:float ->
    Gsl_integration.qawo_sine -> n:int -> Gsl_integration.qawo_table
    = "ml_gsl_integration_qawo_table_alloc"
  external set_qawo :
    Gsl_integration.qawo_table ->
    omega:float -> l:float -> Gsl_integration.qawo_sine -> unit
    = "ml_gsl_integration_qawo_table_set"
  external free_qawo : Gsl_integration.qawo_table -> unit
    = "ml_gsl_integration_qawo_table_free"
  external qawo :
    Gsl_fun.gsl_fun ->
    a:float ->
    epsabs:float ->
    epsrel:float ->
    ?limit:int ->
    Gsl_integration.workspace -> Gsl_integration.qawo_table -> Gsl_fun.result
    = "ml_gsl_integration_qawo_bc" "ml_gsl_integration_qawo"
  external qawf :
    Gsl_fun.gsl_fun ->
    a:float ->
    epsabs:float ->
    ?limit:int ->
    Gsl_integration.workspace ->
    Gsl_integration.workspace -> Gsl_integration.qawo_table -> Gsl_fun.result
    = "ml_gsl_integration_qawf_bc" "ml_gsl_integration_qawf"
end