Template Struct sampling_pd_t

Struct Documentation

template<Quantity DensityQ>
struct sampling_pd_t

Simple abstraction for the common case where we sample/query a density that might be either continuos or discrete.

Public Functions

constexpr sampling_pd_t() noexcept = default
inline constexpr sampling_pd_t(DensityQ d) noexcept
sampling_pd_t(const sampling_pd_t&) noexcept = default
sampling_pd_t &operator=(const sampling_pd_t&) noexcept = default
inline measure_e measure() const noexcept

Measure of the represented density.

inline auto is_discrete() const noexcept
inline auto density() const noexcept

Returns the density. measure() must be wt::measure_e::continuos.

inline auto density_or_zero() const noexcept

Returns the density for continuos samples, otherwise returns 0.

inline auto mass() const noexcept

Returns the probability mass. measure() must be wt::measure_e::discrete.

inline bool isfinite() const noexcept
inline bool isnan() const noexcept
inline auto &operator*=(f_t f) noexcept
inline auto &operator/=(f_t f) noexcept

Public Members

DensityQ d
f_t m = 0

Public Static Functions

static inline auto discrete(f_t mass) noexcept

Constructs a sample with discrete probability mass mass.

Friends

inline friend sampling_pd_t operator*(f_t f, sampling_pd_t s) noexcept
inline friend sampling_pd_t operator*(sampling_pd_t s, f_t f) noexcept
inline friend sampling_pd_t operator/(sampling_pd_t s, f_t f) noexcept
inline friend bool operator==(const sampling_pd_t &s, zero_t) noexcept
inline friend bool operator==(zero_t, const sampling_pd_t &s) noexcept
inline friend bool operator!=(const sampling_pd_t &s, zero_t) noexcept
inline friend bool operator!=(zero_t, const sampling_pd_t &s) noexcept