Module Poly.Smc

type 'a t
val return : 'a -> 'a t
val bind : 'a t -> ('a -> 'b t) -> 'b t
val map : 'a t -> ('a -> 'b) -> 'b t
val map2 : 'a t -> 'b t -> ('a -> 'b -> 'c) -> 'c t
val map_array : 'a t array -> ('a array -> 'b) -> 'b t
val if_ : bool t -> (bool -> 'a t) -> 'a t
module Infix : sig ... end
val sample : 'a Dagger.Dist.t -> 'a t
val samplei : 'a Dagger.Dist.t t -> 'a t
val map_score : 'a t -> ('a -> float) -> 'a t
val map_log_score : 'a t -> ('a -> Dagger.Log_space.t) -> 'a t
val score : float -> unit t
val log_score : Dagger.Log_space.t -> unit t
module List_ops : sig ... end
module Array_ops : sig ... end
module Seq_ops : sig ... end
type particle_output = Smc_types.particle_output
type resampling_state = Smc_types.resampling_state
val fork : int -> unit t
val get_score : Dagger.Log_space.t t
val set_score : Dagger.Log_space.t -> unit t
type !'a population = {
  1. terminated : ('a * float) array;
  2. active : (particle_output * float) array;
  3. total_mass : float;
}
exception Invalid_population
val run : (particle_output, float, resampling_state) Dagger.Resampling.strategy -> resampling_state -> npart:int -> 'a t -> Dagger.RNG.t -> 'a population Stdlib.Seq.t
val run_custom : (particle_output, float, resampling_state) Dagger.Resampling.strategy -> resampling_state -> npart:int -> (int -> 'a t) -> Dagger.RNG.t -> 'a population Stdlib.Seq.t