﻿ s09ab Method
s09ab returns the value of the inverse circular cosine, $\mathrm{arccos} x$; the result is in the principal range $\left(0,\pi \right)$.

# Syntax

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

#### Parameters

x
Type: System..::..Double
On entry: the argument $x$ of the function.
Constraint: $\left|{\mathbf{x}}\right|\le 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

s09ab returns the value of the inverse circular cosine, $\mathrm{arccos} x$; the result is in the principal range $\left(0,\pi \right)$.

# Description

s09ab calculates an approximate value for the inverse circular cosine, $\mathrm{arccos} x$. It is based on the Chebyshev expansion
 $arcsin x=x×yt=x∑′r=0arTrt$
where $\frac{-1}{\sqrt{2}}\le x\le \frac{1}{\sqrt{2}}\text{, and }t=4{x}^{2}-1$.
For ${x}^{2}\le \frac{1}{2}\text{, }\mathrm{arccos} x=\frac{\pi }{2}-\mathrm{arcsin} x$.
For $-1\le x<\frac{-1}{\sqrt{2}}\text{, }\mathrm{arccos} x=\pi -\mathrm{arcsin} \sqrt{1-{x}^{2}}$.
For $\frac{1}{\sqrt{2}}.
For $\left|x\right|>1\text{, }\mathrm{arccos} x$ is undefined and the method fails.

# References

Abramowitz M and Stegun I A (1972) Handbook of Mathematical Functions (3rd Edition) Dover Publications

# Error Indicators and Warnings

Errors or warnings detected by the method:
${\mathbf{ifail}}=1$
s09ab has been called with $\left|{\mathbf{x}}\right|>1.0$, for which arccos is undefined. A zero result is returned.
${\mathbf{ifail}}=-9000$
An error occured, see message report.

# Accuracy

If $\delta$ and $\epsilon$ are the relative errors in the argument and the result, respectively, then in principle
 $ε≃xarccos x1-x2×δ.$
The equality should hold if $\delta$ is greater than the machine precision ($\delta$ is due to data errors etc.), but if $\delta$ is due simply to round-off in the machine it is possible that rounding etc. in internal calculations may lose one extra figure.
The behaviour of the amplification factor $\frac{x}{\mathrm{arccos} x\sqrt{1-{x}^{2}}}$ is shown in the graph below.
In the region of $x=0$ this factor tends to zero and the accuracy will be limited by the machine precision. For $\left|x\right|$ close to one, $1-\left|x\right|\sim \delta$, the above analysis is not applicable owing to the fact that both the argument and the result are bounded $\left|x\right|\le 1$, $0\le \mathrm{arccos} x\le \pi$.
In the region of $x\sim -1$ we have $\epsilon \sim \sqrt{\delta }$, that is the result will have approximately half as many correct significant figures as the argument.
In the region $x\sim +1$, we have that the absolute error in the result, $E$, is given by $E\sim \sqrt{\delta }$, that is the result will have approximately half as many decimal places correct as there are correct figures in the argument.
Figure 1

None.

None.

# Example

This example reads values of the argument $x$ from a file, evaluates the function at each value of $x$ and prints the results.

Example program (C#): s09abe.cs

Example program data: s09abe.d

Example program results: s09abe.r