  In probabilistic (Bayesian) inferences, we typically want to compute
properties of the posterior distribution, describing knowledge of unknown
quantities in the context of a particular dataset and the assumed prior
information. The marginal likelihood, also known as the "evidence", is a key
quantity in Bayesian model selection. The Diffusive Nested Sampling algorithm,
a variant of Nested Sampling, is a powerful tool for generating posterior
samples and estimating marginal likelihoods. It is effective at solving complex
problems including many where the posterior distribution is multimodal or has
strong dependencies between variables. DNest4 is an open source (MIT licensed),
multi-threaded implementation of this algorithm in C++11, along with associated
utilities including: i) RJObject, a class template for finite mixture models,
(ii) A Python package allowing basic use without C++ coding, and iii)
Experimental support for models implemented in Julia. In this paper we
demonstrate DNest4 usage through examples including simple Bayesian data
analysis, finite mixture models, and Approximate Bayesian Computation.
