This file provides functions that evaluate the PDFs and CDFs of a number of probability distributions. In addition, it includes definitions for another of related functions, such as the gamma and beta functions.
The various distribution functions in this file operate on both scalar quantiles and matrices of quantiles and the definitions of both forms of these functions appear below. We provide explicit documentation only for the scalar versions of the these functions and describe the Matrix versions in the scalar calls' documents. Much like the operators in matrix.h, we implement these overloaded versions of the distribution functions in terms of both generalized and default templates to allow for explicit control over the template type of the returned Matrix.
template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> Matrix<double, RO, RS> scythe::pbeta (const Matrix<double, PO, PS> &X, __VA_ARGS__) template<matrix_order O, matrix_style S> Matrix<double, O, Concrete> scythe::pbeta (const Matrix<double, O, S> &X, __VA_ARGS__)
template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> Matrix<double, RO, RS> scythe::pbeta (const Matrix<double, PO, PS> &X, double a, double b) template<matrix_order O, matrix_style S> Matrix<double, O, Concrete> scythe::pbeta (const Matrix<double, O, S> &X, double a, double b)
#include <iostream>
#include <cmath>
#include <cfloat>
#include <climits>
#include <algorithm>
#include <limits>
#include "scythestat/matrix.h"
#include "scythestat/ide.h"
#include "scythestat/error.h"
Include dependency graph for distributions.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Namespaces | |
| namespace | scythe |
Defines | |
| #define | M_PI 3.141592653589793238462643383280 |
| #define | M_LN_SQRT_2PI 0.918938533204672741780329736406 |
| #define | M_LN_SQRT_PId2 0.225791352644727432363097614947 |
| #define | M_1_SQRT_2PI 0.39894228040143267793994605993 |
| #define | M_2PI 6.28318530717958647692528676655 |
| #define | M_SQRT_32 5.656854249492380195206754896838 |
| #define | S0 0.083333333333333333333 |
| #define | S1 0.00277777777777777777778 |
| #define | S2 0.00079365079365079365079365 |
| #define | S3 0.000595238095238095238095238 |
| #define | S4 0.0008417508417508417508417508 |
| #define | SIXTEN 16 |
| #define | do_del(X) |
| #define | swap_tail |
| #define | SCYTHE_ARGSET() __VA_ARGS__ |
| #define | SCYTHE_DISTFUN_MATRIX(NAME, XTYPE, ARGNAMES,) |
Functions | |
| double | scythe::gammafn (double x) |
| The gamma function. | |
| double | scythe::lngammafn (double x) |
| The natural log of the absolute value of the gamma function. | |
| double | scythe::betafn (double a, double b) |
| The beta function. | |
| double | scythe::lnbetafn (double a, double b) |
| The natural log of the beta function. | |
| int | scythe::factorial (unsigned int n) |
| The factorial function. | |
| double | scythe::lnfactorial (unsigned int n) |
| The log of the factorial function. | |
| double | scythe::pbeta (double x, double a, double b) |
| The beta distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pbeta (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pbeta (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double b double | scythe::dbeta (double x, double a, double b) |
| The beta density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dbeta (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dbeta (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double b double | scythe::lndbeta1 (double x, double a, double b) |
| The natural log of the ordinate of the beta density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::lndbeta1 (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::lndbeta1 (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double b double | scythe::pbinom (double x, unsigned int n, double p) |
| The binomial distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pbinom (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pbinom (const Matrix< double, O, S > &X, __VA_ARGS__) |
| unsigned int double p double | scythe::dbinom (double x, unsigned int n, double p) |
| The binomial density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dbinom (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dbinom (const Matrix< double, O, S > &X, __VA_ARGS__) |
| unsigned int double p double | scythe::pchisq (double x, double df) |
The distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pchisq (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pchisq (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double df double | scythe::dchisq (double x, double df) |
The density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dchisq (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dchisq (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double df double | scythe::pexp (double x, double scale) |
| The exponential distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pexp (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pexp (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double scale double | scythe::dexp (double x, double scale) |
| The exponential density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dexp (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dexp (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double scale double | scythe::pf (double x, double df1, double df2) |
| The F distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pf (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pf (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double df2 double | scythe::df (double x, double df1, double df2) |
| The F density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::df (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::df (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double df2 double | scythe::pgamma (double x, double shape, double scale) |
| The gamma distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pgamma (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pgamma (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double scale double | scythe::dgamma (double x, double shape, double scale) |
| The gamma density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dgamma (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dgamma (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double scale double | scythe::plogis (double x, double location, double scale) |
| The logistic distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::plogis (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::plogis (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double scale double | scythe::dlogis (double x, double location, double scale) |
| The logistic density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dlogis (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dlogis (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double scale double | scythe::plnorm (double x, double logmean, double logsd) |
| The log-normal distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::plnorm (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::plnorm (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double logsd double | scythe::dlnorm (double x, double logmean, double logsd) |
| The log-normal density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dlnorm (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dlnorm (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double logsd double | scythe::pnbinom (unsigned int x, double n, double p) |
| The negative binomial distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pnbinom (const Matrix< unsigned int, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pnbinom (const Matrix< unsigned int, O, S > &X, __VA_ARGS__) |
| double double p double | scythe::dnbinom (unsigned int x, double n, double p) |
| The negative binomial density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dnbinom (const Matrix< unsigned int, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dnbinom (const Matrix< unsigned int, O, S > &X, __VA_ARGS__) |
| double double p double | scythe::pnorm (double x, double mean, double sd) |
| The normal distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pnorm (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pnorm (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double sd double | scythe::dnorm (double x, double mean, double sd) |
| The normal density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dnorm (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dnorm (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double sd double | scythe::lndnorm (double x, double mean, double sd) |
| The natural log of normal density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::lndnorm (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::lndnorm (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double sd double | scythe::qnorm1 (double in_p) |
| The standard normal quantile function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::qnorm1 (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::qnorm1 (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double in_p double | scythe::ppois (unsigned int x, double lambda) |
| The Poisson distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::ppois (const Matrix< unsigned int, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::ppois (const Matrix< unsigned int, O, S > &X, __VA_ARGS__) |
| double lambda double | scythe::dpois (unsigned int x, double lambda) |
| The Poisson density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dpois (const Matrix< unsigned int, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dpois (const Matrix< unsigned int, O, S > &X, __VA_ARGS__) |
| double lambda double | scythe::pt (double x, double n) |
| The Student t distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pt (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pt (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double n double | scythe::dt (double x, double n) |
| The Student t distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dt (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dt (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double n double | scythe::dt1 (double x, double mu, double sigma2, double nu) |
| The univariate Student t density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dt1 (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dt1 (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double double nu double | scythe::lndt1 (double x, double mu, double sigma2, double nu) |
| The natural log of the univariate Student t density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::lndt1 (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::lndt1 (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double double nu double | scythe::punif (double x, double a, double b) |
| The uniform distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::punif (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::punif (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double b double | scythe::dunif (double x, double a, double b) |
| The uniform density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dunif (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dunif (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double b double | scythe::pweibull (double x, double shape, double scale) |
| The Weibull distribution function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::pweibull (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::pweibull (const Matrix< double, O, S > &X, __VA_ARGS__) |
| double double scale double | scythe::dweibull (double x, double shape, double scale) |
| The Weibull density function. | |
| template<matrix_order RO, matrix_style RS, matrix_order PO, matrix_style PS> | |
| Matrix< double, RO, RS > | scythe::dweibull (const Matrix< double, PO, PS > &X, __VA_ARGS__) |
| template<matrix_order O, matrix_style S> | |
| Matrix< double, O, Concrete > | scythe::dweibull (const Matrix< double, O, S > &X, __VA_ARGS__) |
| template<matrix_order O1, matrix_style S1, matrix_order O2, matrix_style S2, matrix_order O3, matrix_style S3> | |
| double double scale double | scythe::lndmvn (const Matrix< double, O1, S1 > &x, const Matrix< double, O2, S2 > &mu, const Matrix< double, O3, S3 > &Sigma) |
| The natural log of the multivariate normal density function. | |
Variables | |
| double | scythe::a |
| double | scythe::a |
| double | scythe::a |
| unsigned int | scythe::n |
| unsigned int | scythe::n |
| double | scythe::df1 |
| double | scythe::df1 |
| double | scythe::shape |
| double | scythe::shape |
| double | scythe::location |
| double | scythe::location |
| double | scythe::logmean |
| double | scythe::logmean |
| double | scythe::n |
| double | scythe::n |
| double | scythe::mean |
| double | scythe::mean |
| double | scythe::mean |
| double | scythe::mu |
| double double | scythe::sigma2 |
| double | scythe::mu |
| double double | scythe::sigma2 |
| double | scythe::a |
| double | scythe::a |
| double | scythe::shape |
| double | scythe::shape |
1.4.7