s21bh returns a value of the classical (Legendre) form of the complete elliptic integral of the first kind.

# Syntax

C#
```public static double s21bh(
double dm,
out int ifail
)```
Visual Basic
```Public Shared Function s21bh ( _
dm As Double, _
<OutAttribute> ByRef ifail As Integer _
) As Double```
Visual C++
```public:
static double s21bh(
double dm,
[OutAttribute] int% ifail
)```
F#
```static member s21bh :
dm : float *
ifail : int byref -> float
```

#### Parameters

dm
Type: System..::..Double
On entry: the argument $m$ of the function.
Constraint: ${\mathbf{dm}}<1.0$.
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]).

#### Return Value

s21bh returns a value of the classical (Legendre) form of the complete elliptic integral of the first kind.

# Description

s21bh calculates an approximation to the integral
 $Km=∫0π21-msin2 θ-12dθ,$
where $m<1$.
The integral is computed using the symmetrised elliptic integrals of Carlson (Carlson (1979) and Carlson (1988)). The relevant identity is
 $Km=RF0,1-m,1,$
where ${R}_{F}$ is the Carlson symmetrised incomplete elliptic integral of the first kind (see s21bb).

# References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications
Carlson B C (1979) Computing elliptic integrals by duplication Numerische Mathematik 33 1–16
Carlson B C (1988) A table of elliptic integrals of the third kind Math. Comput. 51 267–280

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
On entry, ${\mathbf{dm}}>1.0$; the function is undefined. On failure, the method returns zero.
${\mathbf{ifail}}=2$
On entry, ${\mathbf{dm}}=1.0$; the function is infinite. On failure, the method returns the largest machine number (see x02al).
${\mathbf{ifail}}=-9000$
An error occured, see message report.

# Accuracy

In principle s21bh is capable of producing full machine precision. However round-off errors in internal arithmetic will result in slight loss of accuracy. This loss should never be excessive as the algorithm does not involve any significant amplification of round-off error. It is reasonable to assume that the result is accurate to within a small multiple of the machine precision.

# Parallelism and Performance

None.

For more information on the algorithm used to compute ${R}_{F}$, see the method document for s21bb.