g01zu is used to initialize methods g01eu and g01mu.
It is intended to be used before a call to g01eu or g01mu.

# Syntax

C#
```public static void g01zu(
double rkappa,
double beta2,
int mode,
out double xl,
out double xu,
double[] rcomm,
out int ifail
)```
Visual Basic
```Public Shared Sub g01zu ( _
rkappa As Double, _
beta2 As Double, _
mode As Integer, _
<OutAttribute> ByRef xl As Double, _
<OutAttribute> ByRef xu As Double, _
rcomm As Double(), _
<OutAttribute> ByRef ifail As Integer _
)```
Visual C++
```public:
static void g01zu(
double rkappa,
double beta2,
int mode,
[OutAttribute] double% xl,
[OutAttribute] double% xu,
array<double>^ rcomm,
[OutAttribute] int% ifail
)```
F#
```static member g01zu :
rkappa : float *
beta2 : float *
mode : int *
xl : float byref *
xu : float byref *
rcomm : float[] *
ifail : int byref -> unit
```

#### Parameters

rkappa
Type: System..::..Double
On entry: the argument $\kappa$ of the function.
Constraint: $0.01\le {\mathbf{rkappa}}\le 10.0$.
beta2
Type: System..::..Double
On entry: the argument ${\beta }^{2}$ of the function.
Constraint: $0.0\le {\mathbf{beta2}}\le 1.0$.
mode
Type: System..::..Int32
On entry: if ${\mathbf{mode}}=0$, then g01mu is to be called after the call to g01zu. Otherwise, g01eu is to be called.
xl
Type: System..::..Double%
On exit: ${x}_{l}$, a threshold value below which ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ will be set to zero by g01mu and ${\Phi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ will be set to zero by g01eu if $\lambda <{x}_{l}$.
xu
Type: System..::..Double%
On exit: ${x}_{u}$, a threshold value above which ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ will be set to zero by g01mu and ${\Phi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ will be set to unity by g01eu if $\lambda >{x}_{u}$.
rcomm
Type: array<System..::..Double>[]()[][]
An array of size [$322$]
On exit: this parameter should be passed unchanged to g01eu or g01mu.
ifail
Type: System..::..Int32%
On exit: ${\mathbf{ifail}}={0}$ unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

# Description

g01zu initializes the array rcomm for use by g01eu or g01mu in the evaluation of the Vavilov functions ${\varphi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ and ${\Phi }_{V}\left(\lambda \text{;}\kappa ,{\beta }^{2}\right)$ respectively.
Multiple calls to g01eu or g01mu can be made following a single call to g01zu, provided that rkappa or beta2 do not change, and that either all calls are to g01eu or all calls are to g01mu. If you wish to call both g01eu and g01mu, then you will need to initialize both separately.

# References

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

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{rkappa}}<0.01$, or ${\mathbf{rkappa}}>10.0$, or ${\mathbf{beta2}}<0.0$, or ${\mathbf{beta2}}>1.0$.
${\mathbf{ifail}}=2$
The initialization has been abandoned due to an internal error. This error exit is unlikely to occur, but if it does change the values of rkappa and/or beta2 and rerun g01zu.
${\mathbf{ifail}}=-9000$
An error occured, see message report.
${\mathbf{ifail}}=-8000$
Negative dimension for array $〈\mathit{\text{value}}〉$
${\mathbf{ifail}}=-6000$
Invalid Parameters $〈\mathit{\text{value}}〉$

# Accuracy

At least five significant digits are usually correct.

None.