sig
  val seed : int -> unit
  val shuffle : 'a array -> 'a array
  val choose : 'a array -> int -> 'a array
  val sample : 'a array -> int -> 'a array
  val mean : ?w:float array -> float array -> float
  val variance : ?w:float array -> ?mean:float -> float array -> float
  val std : ?w:float array -> ?mean:float -> float array -> float
  val sem : ?w:float array -> ?mean:float -> float array -> float
  val absdev : ?w:float array -> ?mean:float -> float array -> float
  val skew :
    ?w:float array -> ?mean:float -> ?sd:float -> float array -> float
  val kurtosis :
    ?w:float array -> ?mean:float -> ?sd:float -> float array -> float
  val central_moment : int -> float array -> float
  val covariance :
    ?mean0:float -> ?mean1:float -> float array -> float array -> float
  val correlation : float array -> float array -> float
  val pearson_r : float array -> float array -> float
  val kendall_tau : float array -> float array -> float
  val spearman_rho : float array -> float array -> float
  val autocorrelation : ?lag:int -> float array -> float
  val median : float array -> float
  val percentile : float array -> float -> float
  val first_quartile : float array -> float
  val third_quartile : float array -> float
  val min : float array -> float
  val max : float array -> float
  val minmax : float array -> float * float
  val min_i : float array -> float * int
  val max_i : float array -> float * int
  val minmax_i : float array -> float * int * float * int
  val sort : ?inc:bool -> float array -> float array
  val argsort : ?inc:bool -> float array -> int array
  val rank :
    ?ties_strategy:[ `Average | `Max | `Min ] -> float array -> float array
  val histogram : float array -> int -> int array
  val ecdf : float array -> float array * float array
  val z_score : mu:float -> sigma:float -> float array -> float array
  val t_score : float array -> float array
  val normlise_pdf : float array -> float array
  val metropolis_hastings :
    (float array -> float) -> float array -> int -> float array array
  val gibbs_sampling :
    (float array -> int -> float) -> float array -> int -> float array array
  type tail = BothSide | RightSide | LeftSide
  val z_test :
    mu:float ->
    sigma:float ->
    ?alpha:float ->
    ?side:Owl_stats.tail -> float array -> bool * float * float
  val t_test :
    mu:float ->
    ?alpha:float ->
    ?side:Owl_stats.tail -> float array -> bool * float * float
  val t_test_paired :
    ?alpha:float ->
    ?side:Owl_stats.tail ->
    float array -> float array -> bool * float * float
  val t_test_unpaired :
    ?alpha:float ->
    ?side:Owl_stats.tail ->
    ?equal_var:bool -> float array -> float array -> bool * float * float
  val var_test :
    ?alpha:float ->
    ?side:Owl_stats.tail -> var:float -> float array -> bool * float * float
  val jb_test : ?alpha:float -> float array -> bool * float * float
  val fisher_test :
    ?alpha:float ->
    ?side:Owl_stats.tail -> int -> int -> int -> int -> bool * float * float
  val runs_test :
    ?alpha:float ->
    ?side:Owl_stats.tail -> ?v:float -> float array -> bool * float * float
  val mannwhitneyu :
    ?alpha:float ->
    ?side:Owl_stats.tail ->
    float array -> float array -> bool * float * float
  val wilcoxon :
    ?alpha:float ->
    ?side:Owl_stats.tail ->
    float array -> float array -> bool * float * float
  module Rnd :
    sig
      val flat : float -> float -> float
      val uniform : unit -> float
      val gaussian : ?sigma:float -> unit -> float
      val gaussian_tail : float -> float -> float
      val bivariate_gaussian : float -> float -> float -> float * float
      val exponential : float -> float
      val laplace : float -> float
      val exppow : float -> float -> float
      val cauchy : float -> float
      val rayleigh : float -> float
      val landau : unit -> float
      val levy : float -> float -> float
      val levy_skew : float -> float -> float -> float
      val gamma : float -> float -> float
      val lognormal : float -> float -> float
      val chisq : float -> float
      val dirichlet : float array -> float array -> unit
      val fdist : float -> float -> float
      val tdist : float -> float
      val beta : float -> float -> float
      val logistic : float -> float
      val pareto : float -> float -> float
      val dir_2d : unit -> float * float
      val dir_2d_trig_method : unit -> float * float
      val dir_3d : unit -> float * float * float
      val dir_nd : int -> float array
      val weibull : float -> float -> float
      val gumbel1 : float -> float -> float
      val gumbel2 : float -> float -> float
      val uniform_int : ?a:int -> ?b:int -> unit -> int
      val poisson : float -> int
      val bernoulli : float -> int
      val binomial : float -> int -> int
      val multinomial : int -> float array -> int array
      val negative_binomial : float -> float -> int
      val pascal : float -> int -> int
      val geometric : float -> int
      val hypergeometric : int -> int -> int -> int
      val logarithmic : float -> int
    end
  module Pdf :
    sig
      val flat : float -> float -> float -> float
      val gaussian : float -> float -> float
      val gaussian_tail : float -> float -> float -> float
      val bivariate_gaussian :
        float -> float -> float -> float -> float -> float
      val exponential : float -> float -> float
      val laplace : float -> float -> float
      val cauchy : float -> float -> float
      val exppow : float -> float -> float -> float
      val rayleigh : float -> float -> float
      val landau : float -> float
      val gamma : float -> float -> float -> float
      val lognormal : float -> float -> float -> float
      val chisq : float -> float -> float
      val dirichlet : float array -> float array -> float
      val dirichlet_lnpdf : float array -> float array -> float
      val fdist : float -> float -> float -> float
      val tdist : float -> float -> float
      val beta : float -> float -> float -> float
      val logistic : float -> float -> float
      val pareto : float -> float -> float -> float
      val weibull : float -> float -> float -> float
      val gumbel1 : float -> float -> float -> float
      val gumbel2 : float -> float -> float -> float
      val poisson : int -> float -> float
      val bernoulli : int -> float -> float
      val binomial : int -> float -> int -> float
      val multinomial : float array -> int array -> float
      val multinomial_lnpdf : float array -> int array -> float
      val negative_binomial : int -> float -> float -> float
      val pascal : int -> float -> int -> float
      val geometric : int -> float -> float
      val hypergeometric : int -> int -> int -> int -> float
      val logarithmic : int -> float -> float
    end
  module Cdf :
    sig
      val flat_P : float -> float -> float -> float
      val flat_Q : float -> float -> float -> float
      val flat_Pinv : float -> float -> float -> float
      val flat_Qinv : float -> float -> float -> float
      val gaussian_P : float -> float -> float
      val gaussian_Q : float -> float -> float
      val gaussian_Pinv : float -> float -> float
      val gaussian_Qinv : float -> float -> float
      val exponential_P : float -> float -> float
      val exponential_Q : float -> float -> float
      val exponential_Pinv : float -> float -> float
      val exponential_Qinv : float -> float -> float
      val laplace_P : float -> float -> float
      val laplace_Q : float -> float -> float
      val laplace_Pinv : float -> float -> float
      val laplace_Qinv : float -> float -> float
      val exppow_P : float -> float -> float -> float
      val exppow_Q : float -> float -> float -> float
      val cauchy_P : float -> float -> float
      val cauchy_Q : float -> float -> float
      val cauchy_Pinv : float -> float -> float
      val cauchy_Qinv : float -> float -> float
      val rayleigh_P : float -> float -> float
      val rayleigh_Q : float -> float -> float
      val rayleigh_Pinv : float -> float -> float
      val rayleigh_Qinv : float -> float -> float
      val gamma_P : float -> float -> float -> float
      val gamma_Q : float -> float -> float -> float
      val gamma_Pinv : float -> float -> float -> float
      val gamma_Qinv : float -> float -> float -> float
      val lognormal_P : float -> float -> float -> float
      val lognormal_Q : float -> float -> float -> float
      val lognormal_Pinv : float -> float -> float -> float
      val lognormal_Qinv : float -> float -> float -> float
      val chisq_P : float -> float -> float
      val chisq_Q : float -> float -> float
      val chisq_Pinv : float -> float -> float
      val chisq_Qinv : float -> float -> float
      val fdist_P : float -> float -> float -> float
      val fdist_Q : float -> float -> float -> float
      val fdist_Pinv : float -> float -> float -> float
      val fdist_Qinv : float -> float -> float -> float
      val tdist_P : float -> float -> float
      val tdist_Q : float -> float -> float
      val tdist_Pinv : float -> float -> float
      val tdist_Qinv : float -> float -> float
      val beta_P : float -> float -> float -> float
      val beta_Q : float -> float -> float -> float
      val beta_Pinv : float -> float -> float -> float
      val beta_Qinv : float -> float -> float -> float
      val logistic_P : float -> float -> float
      val logistic_Q : float -> float -> float
      val logistic_Pinv : float -> float -> float
      val logistic_Qinv : float -> float -> float
      val pareto_P : float -> float -> float -> float
      val pareto_Q : float -> float -> float -> float
      val pareto_Pinv : float -> float -> float -> float
      val pareto_Qinv : float -> float -> float -> float
      val weibull_P : float -> float -> float -> float
      val weibull_Q : float -> float -> float -> float
      val weibull_Pinv : float -> float -> float -> float
      val weibull_Qinv : float -> float -> float -> float
      val gumbel1_P : float -> float -> float -> float
      val gumbel1_Q : float -> float -> float -> float
      val gumbel1_Pinv : float -> float -> float -> float
      val gumbel1_Qinv : float -> float -> float -> float
      val gumbel2_P : float -> float -> float -> float
      val gumbel2_Q : float -> float -> float -> float
      val gumbel2_Pinv : float -> float -> float -> float
      val gumbel2_Qinv : float -> float -> float -> float
      val poisson_P : int -> float -> float
      val poisson_Q : int -> float -> float
      val binomial_P : int -> float -> int -> float
      val binomial_Q : int -> float -> int -> float
      val negative_binomial_P : int -> float -> float -> float
      val negative_binomial_Q : int -> float -> float -> float
      val pascal_P : int -> float -> int -> float
      val pascal_Q : int -> float -> int -> float
      val geometric_P : int -> float -> float
      val geometric_Q : int -> float -> float
      val hypergeometric_P : int -> int -> int -> int -> float
      val hypergeometric_Q : int -> int -> int -> int -> float
    end
end