Numerics for propagating Gaussian moments through a function, and for expectations under a normal: the unscented transform, local linearisation, Gauss–Hermite cubature and a Rauch–Tung–Striebel smoother. It works on means and covariances, not on distributions, and knows nothing of message passing. The node packages of the ReactiveMP ecosystem build their rules on it.
import Pkg; Pkg.add("MessagePassingRulesApproximations")using MessagePassingRulesApproximations
m, V = approximate(Unscented(), x -> 2x + 1, (1.0,), (0.5,)) # ≈ (3.0, 2.0)
A, b = approximate(Linearization(), x -> x^2, (3.0,)) # (6.0, -9.0)- Documentation: https://reactivebayes.github.io/MessagePassingRulesApproximations.jl/stable/.
make docsbuilds it locally, intodocs/build. - Tests:
make testruns the suite as CI does;make test test_args="name:Gauss"selects items by tag, by name or by file.make helplists the other targets:docs,docs-serve,format,check-format,test-fast. - Julia 1.10 or later. MIT licence.