NAG CL Interfaceg01muc (pdf_​vavilov)

Settings help

CL Name Style:

1Purpose

g01muc returns the value of the Vavilov density function ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$.
It is intended to be used after a call to g01zuc.

2Specification

 #include
 double g01muc (double x, const double comm_arr[])
The function may be called by the names: g01muc, nag_stat_pdf_vavilov or nag_prob_density_vavilov.

3Description

g01muc evaluates an approximation to the Vavilov density function ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ given by
 $ϕV(λ;κ,β2)=12πi ∫c-i∞ c+i∞eλsf(s;κ,β2)ds,$
where $\kappa >0$ and $0\le {\beta }^{2}\le 1$, $c$ is an arbitrary real constant and
 $f(s;κ,β2)=C(κ,β2)exp{sln⁡κ+(s+κβ2)[ln(sκ)+E1(sκ)]-κexp(-sκ)} .$
${E}_{1}\left(x\right)=\underset{0}{\overset{x}{\int }}{t}^{-1}\left(1-{e}^{-t}\right)dt$ is the exponential integral, $C\left(\kappa ,{\beta }^{2}\right)=\mathrm{exp}\left\{\kappa \left(1+\gamma {\beta }^{2}\right)\right\}$ and $\gamma$ is Euler's constant.
The method used is based on Fourier expansions. Further details can be found in Schorr (1974).
For values of $\kappa \le 0.01$, the Vavilov distribution can be replaced by the Landau distribution since ${\lambda }_{V}=\left({\lambda }_{L}-\mathrm{ln}\kappa \right)/\kappa$. For values of $\kappa \ge 10$, the Vavilov distribution can be replaced by a Gaussian distribution with mean $\mu =\gamma -1-{\beta }^{2}-\mathrm{ln}\kappa$ and variance ${\sigma }^{2}=\left(2-{\beta }^{2}\right)/2\kappa$.

4References

Schorr B (1974) Programs for the Landau and the Vavilov distributions and the corresponding random numbers Comp. Phys. Comm. 7 215–224

5Arguments

1: $\mathbf{x}$double Input
On entry: the argument $\lambda$ of the function.
2: $\mathbf{comm_arr}\left[322\right]$const double Communication Array
On entry: this must be the same argument comm_arr as returned by a previous call to g01zuc.

None.

7Accuracy

At least five significant digits are usually correct.

8Parallelism and Performance

g01muc is not threaded in any implementation.

g01muc can be called repeatedly with different values of $\lambda$ provided that the values of $\kappa$ and ${\beta }^{2}$ remain unchanged between calls. Otherwise, g01zuc must be called again. This is illustrated in Section 10.

10Example

This example evaluates ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ at $\lambda =2.5$, $\kappa =0.4$ and ${\beta }^{2}=0.1$, and prints the results.

10.1Program Text

Program Text (g01muce.c)

10.2Program Data

Program Data (g01muce.d)

10.3Program Results

Program Results (g01muce.r)