# Erlang

Erlang distribution constructor.

## Usage

``````var Erlang = require( '@stdlib/math/base/dists/erlang/ctor' );
``````

#### Erlang( [k, lambda] )

Returns an Erlang distribution object.

``````var erlang = new Erlang();

var mode = erlang.mode;
// returns 0.0
``````

By default, `k = 1.0` and `lambda = 1.0`. To create a distribution having a different `k` (shape parameter) and `lambda` (rate parameter), provide parameter values.

``````var erlang = new Erlang( 2, 4.0 );

var mode = erlang.mode;
// returns 0.25
``````

## erlang

An Erlang distribution object has the following properties and methods...

### Writable Properties

#### erlang.k

Shape parameter of the distribution. `k` must be a positive integer.

``````var erlang = new Erlang();

var k = erlang.k;
// returns 1.0

erlang.k = 3.0;

k = erlang.k;
// returns 3.0
``````

#### erlang.lambda

Rate parameter of the distribution. `lambda` must be a positive number.

``````var erlang = new Erlang( 2, 4.0 );

var lambda = erlang.lambda;
// returns 4.0

erlang.lambda = 3.0;

lambda = erlang.lambda;
// returns 3.0
``````

### Computed Properties

#### Erlang.prototype.entropy

Returns the differential entropy.

``````var erlang = new Erlang( 4, 12.0 );

var entropy = erlang.entropy;
// returns ~-0.462
``````

#### Erlang.prototype.kurtosis

Returns the excess kurtosis.

``````var erlang = new Erlang( 4, 12.0 );

var kurtosis = erlang.kurtosis;
// returns 1.5
``````

#### Erlang.prototype.mean

Returns the expected value.

``````var erlang = new Erlang( 4, 12.0 );

var mu = erlang.mean;
// returns ~0.333
``````

#### Erlang.prototype.mode

Returns the mode.

``````var erlang = new Erlang( 4, 12.0 );

var mode = erlang.mode;
// returns 0.25
``````

#### Erlang.prototype.skewness

Returns the skewness.

``````var erlang = new Erlang( 4, 12.0 );

var skewness = erlang.skewness;
// returns 1.0
``````

#### Erlang.prototype.stdev

Returns the standard deviation.

``````var erlang = new Erlang( 4, 12.0 );

var s = erlang.stdev;
// returns ~0.167
``````

#### Erlang.prototype.variance

Returns the variance.

``````var erlang = new Erlang( 4, 12.0 );

var s2 = erlang.variance;
// returns ~0.028
``````

### Methods

#### Erlang.prototype.cdf( x )

Evaluates the cumulative distribution function (CDF).

``````var erlang = new Erlang( 2, 4.0 );

var y = erlang.cdf( 0.5 );
// returns ~0.594
``````

#### Erlang.prototype.logpdf( x )

Evaluates the natural logarithm of the probability density function (PDF).

``````var erlang = new Erlang( 2, 4.0 );

var y = erlang.logpdf( 0.8 );
// returns ~-0.65
``````

#### Erlang.prototype.mgf( t )

Evaluates the moment-generating function (MGF).

``````var erlang = new Erlang( 2, 4.0 );

var y = erlang.mgf( 0.5 );
// returns ~1.306
``````

#### Erlang.prototype.pdf( x )

Evaluates the probability density function (PDF).

``````var erlang = new Erlang( 2, 4.0 );

var y = erlang.pdf( 0.8 );
// returns ~0.522
``````

#### Erlang.prototype.quantile( p )

Evaluates the quantile function at probability `p`.

``````var erlang = new Erlang( 2, 4.0 );

var y = erlang.quantile( 0.5 );
// returns ~0.42

y = quantile( 1.9 );
// returns NaN
``````

## Examples

``````var Erlang = require( '@stdlib/math/base/dists/erlang/ctor' );

var erlang = new Erlang( 2, 4.0 );

var mu = erlang.mean;
// returns 0.5

var mode = erlang.mode;
// returns 0.25

var s2 = erlang.variance;
// returns 0.125

var y = erlang.cdf( 0.8 );
// returns ~0.829
``````