# Interface¶

## Liknorm machine¶

LIKNORM_API void liknorm_integrate(struct LikNormMachine * machine, double * log_zeroth, double * mean, double * variance)

Perform numerical integration.

Parameters
• machine: Machine to perform integration.
• log_zeroth: Zeroth moment.
• log_mean: First moment of the normalized distribution.
• log_variance: Variance of the normalized distribution.

LIKNORM_API void liknorm_destroy_machine(struct LikNormMachine * machine)

Destroy a Machine instance.

Parameters
• machine: Machine to be destroyed. Always call it before exiting your program, otherwise it will leak memory.

## Prior¶

LIKNORM_API void liknorm_set_prior(struct LikNormMachine * machine, double tau, double eta)

Set the natural parameters of Normal prior.

Parameters
• machine: Machine to perform integration.
• tau: It equals to σ⁻².
• eta: It equals to μσ⁻².

## Bernoulli¶

LIKNORM_API void liknorm_set_bernoulli(struct LikNormMachine * machine, double k)

Bernoulli distribution.

It is the discrete probability distribution of a random variable which takes the value 1 with probability p and the value 0 with probability 1 − p. (Wikipedia.)

Parameters
• machine: Liknorm handler.
• k: Number of successes.

## Binomial¶

LIKNORM_API void liknorm_set_binomial(struct LikNormMachine * machine, double k, double n)

Binomial distribution.

It is the discrete probability distribution of the number of successes k in a sequence of n independent experiments. (Wikipedia.) The probability mass function is given by:

Binom(k, n) pᵏ (1 - p)ⁿ⁻ᵏ,


for which Binom(m, n) = n! / (m! (n - m)!).

Parameters
• machine: Liknorm handler.
• k: Number of successes.
• n: Number of trials.

## Gamma¶

LIKNORM_API void liknorm_set_gamma(struct LikNormMachine * machine, double x, double a)

Gamma distribution.

A gamma distribution is a general type of statistical distribution that is related to the beta distribution and arises naturally in processes for which the waiting times between Poisson distributed events are relevant. (Wolfram.)

Parameters
• machine: Liknorm handler.
• x: Waiting time.
• a: Shape parameter α.

## Geometric¶

LIKNORM_API void liknorm_set_geometric(struct LikNormMachine * machine, double x)

Geometric distribution.

Parameters
• machine: Liknorm handler.
• x: Number of trials to success.

## Negative binomial¶

LIKNORM_API void liknorm_set_nbinomial(struct LikNormMachine * machine, double k, double r)

Negative binomial distribution.

It is a discrete probability distribution of the number of successes in a sequence of independent and identically distributed Bernoulli trials before a specified (non-random) number of failures (denoted r) occurs. (Wikipedia.) Let k be the number of successes. The probability mass function is given by:

Binom(k, k + r - 1) pᵏ (1 - p)ʳ,


for which Binom(m, n) = n! / (m! (n - m)!).

Parameters
• machine: Liknorm handler.
• k: Number of successes.
• r: Number of failures.

## Poisson¶

LIKNORM_API void liknorm_set_poisson(struct LikNormMachine * machine, double k)

Poisson distribution.

It is a discrete probability distribution that expresses the probability of a given number of events occurring in a fixed interval of time or space if these events occur with a known constant rate and independently of the time since the last event. (Wikipedia.) The probability mass function is given by:

λᵏe^{-λ} / k!,


for which λ is the rate of occurrence and k the number of occurrences.

Parameters
• machine: Liknorm handler.
• k: Number of occurrences.