Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world.

This is the documentation for an old version of boost. Click here for the latest Boost documentation.
Comparison with C, R, FORTRAN-style Free Functions

You are probably familiar with a statistics library that has free functions, for example the classic NAG C library and matching NAG FORTRAN Library, Microsoft Excel BINOMDIST(number_s,trials,probability_s,cumulative), R, MathCAD pbinom and many others.

If so, you may find 'Distributions as Objects' unfamiliar, if not alien.

However, do not panic, both definition and usage are not really very different.

A very simple example of generating the same values as the NAG C library for the binomial distribution follows. (If you find slightly different values, the Boost C++ version, using double or better, is very likely to be the more accurate. Of course, accuracy is not usually a concern for most applications of this function).

```void nag_binomial_dist(Integer n, double p, Integer k,
double *plek, double *pgtk, double *peqk, NagError *fail)
```

and is called

```g01bjc(n, p, k, &plek, &pgtk, &peqk, NAGERR_DEFAULT);
```

The equivalent using this Boost C++ library is:

```using namespace boost::math;  // Using declaration avoids very long names.
binomial my_dist(4, 0.5); // c.f. NAG n = 4, p = 0.5
```

and values can be output thus:

```cout
<< my_dist.trials() << " "             // Echo the NAG input n = 4 trials.
<< my_dist.success_fraction() << " "   // Echo the NAG input p = 0.5
<< cdf(my_dist, 2) << "  "             // NAG plek with k = 2
<< cdf(complement(my_dist, 2)) << "  " // NAG pgtk with k = 2
<< pdf(my_dist, 2) << endl;            // NAG peqk with k = 2
```

`cdf(dist, k)` is equivalent to NAG library `plek`, lower tail probability of <= k

`cdf(complement(dist, k))` is equivalent to NAG library `pgtk`, upper tail probability of > k

`pdf(dist, k)` is equivalent to NAG library `peqk`, point probability of == k

See binomial_example_nag.cpp for details.