s09aa returns the value of the inverse circular sine, arcsinx. The value is in the principal range -π/2,π/2.

Syntax

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

Parameters

x
Type: System..::..Double
On entry: the argument x of the function.
Constraint: x1.0.
ifail
Type: System..::..Int32%
On exit: ifail=0 unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).

Return Value

s09aa returns the value of the inverse circular sine, arcsinx. The value is in the principal range -π/2,π/2.

Description

s09aa calculates an approximate value for the inverse circular sine, arcsinx. It is based on the Chebyshev expansion
arcsinx=x×yx=xr=0arTrt
where -12x12 and t=4x2-1.
For x212,  arcsinx=x×yx.
For 12<x21,  arcsinx=signxπ2-arcsin1-x2.
For x2>1,  arcsinx 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:
ifail=1
The method has been called with an argument greater than 1.0 in absolute value; arcsinx is undefined and the method returns zero.
ifail=-9000
An error occured, see message report.

Accuracy

If δ and ε are the relative errors in the argument and result, respectively, then in principle
εxarcsinx1-x2×δ.
That is, a relative error in the argument x is amplified by at least a factor xarcsinx1-x2 in the result.
The equality should hold if δ is greater than the machine precision (δ is a result of data errors etc.) but if δ is produced simply by round-off error in the machine it is possible that rounding in internal calculations may lose an extra figure in the result.
This factor stays close to one except near x=1 where its behaviour is shown in the following graph.
Figure 1
Figure 1
For x close to unity, 1-xδ, the above analysis is no longer applicable owing to the fact that both argument and result are subject to finite bounds, (x1 and arcsinx12π). In this region εδ; that is the result will have approximately half as many correct significant figures as the argument.
For x=1 the result will be correct to full machine precision.

Parallelism and Performance

None.

Further Comments

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#): s09aae.cs

Example program data: s09aae.d

Example program results: s09aae.r

See Also