NEWS.md
realized_dist subclass of empirical_dist — preserves provenance (source distribution, sample count) when materializing via Monte Carloensure_realized() internal memoized entry point — all MC fallback methods now share cached samples (calling cdf(e) + density(e) on the same edist no longer draws independent samples)conditional.dist and rmap.dist now route through ensure_realized() for consistent provenanceUniform(a,b) + c → Uniform(a+c, b+c) (location shift)Uniform(a,b) - c → Uniform(a-c, b-c) (location shift)c * Uniform(a,b) → Uniform(min(ca,cb), max(ca,cb)) for c ≠ 0c * Weibull(k,λ) → Weibull(k, c*λ) for c > 0c * ChiSq(df) → Gamma(df/2, 1/(2c)) for c > 0c * LogNormal(μ,σ) → LogNormal(μ+log(c), σ) for c > 0LogNormal * LogNormal → LogNormal(μ₁+μ₂, √(σ₁²+σ₂²))
-Uniform(a,b) → Uniform(-b, -a) (unary negation)/.dist — Division operator: dist / scalar delegates to scalar multiplication rules; scalar / dist and dist / dist create edist
conditional.mvn — closed-form Schur complement conditioning with given_indices/given_values, or predicate-based MC fallbackaffine_transform(x, A, b) — compute AX + b for normal/MVN distributions (exact)marginal.mixture — marginal of mixture is mixture of marginals (exact)conditional.mixture — Bayes’ rule weight update for mixture-of-MVN conditioning, with predicate-based MC fallbackclt(base_dist) — CLT limiting distribution: Normal(0, Var) or MVN(0, Σ)lln(base_dist) — LLN degenerate limit: Normal(μ, 0) or MVN(μ, 0)delta_clt(base_dist, g, dg) — delta method with user-supplied derivative/Jacobiannormal_approx(x) — moment-matching normal approximation of any distributiongamma_dist(shape, rate) — Gamma distribution with hazard/survival functionsweibull_dist(shape, scale) — Weibull distribution with closed-form hazardchi_squared(df) — Chi-squared distribution with hazard/survival functionsuniform_dist(min, max) — Uniform distribution on [min, max]beta_dist(shape1, shape2) — Beta distribution on (0, 1)lognormal(meanlog, sdlog) — Log-normal distribution with hazard/survivalpoisson_dist(lambda) — Poisson distribution with exact expectation via truncated summationmixture(components, weights) — Mixture distributions with law of total variancec * Normal(mu, v) simplifies to Normal(c*mu, c^2*v)
c * Gamma(a, r) simplifies to Gamma(a, r/c) for c > 0c * Exponential(r) simplifies to Gamma(1, r/c) for c > 0Normal(mu, v) + c simplifies to Normal(mu+c, v)
Gamma(a1, r) + Gamma(a2, r) simplifies to Gamma(a1+a2, r) (same rate)Exp(r) + Exp(r) simplifies to Gamma(2, r) (same rate)ChiSq(d1) + ChiSq(d2) simplifies to ChiSq(d1+d2)
Poisson(l1) + Poisson(l2) simplifies to Poisson(l1+l2)
Normal(0,1)^2 simplifies to ChiSq(1)
exp(Normal(mu, v)) simplifies to LogNormal(mu, sqrt(v))
log(LogNormal(ml, sl)) simplifies to Normal(ml, sl^2)
min(Exp(r1), ..., Exp(rk)) simplifies to Exp(sum(r))
realize() generic — materialize any distribution to empirical_dist by samplingedist: cdf, density, sup, conditional, rmap, inv_cdf
countable_set R6 class for countably infinite support (Poisson)inv_cdf.empirical_dist — quantile function for empirical distributionsstopifnot)format() methods for all distribution typesprint() methods delegating to format()
vcov.exponential — was returning rate instead of 1/rate^2
sampler.edist crash when n=1conditional.empirical_dist gives informative error on zero matchesexpectation_data() CI computationnormal, mvn, exponential, empirical_dist
edist) for lazy composition of distributions+, -) on distributions with automatic simplificationfinite_set, interval for representing distribution domainssampler, mean, vcov, density, cdf, params
expectation, conditional, and rmap operations