### Table of Contents

# asin

## NAME

asin, asinf, asinl - arc sine function

## SYNOPSIS

c99 [ *flag*… ] *file*… **-lm** [ *library*… ]

#include <math.h>

**double asin**(**double** *x*);

**float asinf**(**float** *x*);

**long double asinl**(**long double** *x*);

## DESCRIPTION

These functions compute the principal value of the arc sine of their argument *x*. The value of *x* should be in the range [−1,1].

## RETURN VALUES

Upon successful completion, these functions return the arc sine of *x* in the range [−pi/2, pi/2] radians.

For finite values of *x* not in the range [−1,1], a domain error occurs and a NaN is returned.

If *x* is NaN, NaN is returned.

If *x* is ±0, *x* is returned.

If *x* is ±Inf, a domain error occurs and a NaN is returned.

For exceptional cases, **matherr**(3M) tabulates the values to be returned by **asin()** as specified by SVID3 and XPG3.

## ERRORS

These functions will fail if:

**Domain Error**

The *x* argument is finite and not in the range [−1,1], or is ±Inf.

If the integer expression (**math_errhandling** & **MATH_ERREXCEPT**) is non-zero, the invalid floating-point exception is raised.

The **asin()** function sets **errno** to **EDOM** if *x* is not ±Inf or NaN and is not in the range [−1,1].

## USAGE

An application wanting to check for exceptions should call **feclearexcept**(**FE_ALL_EXCEPT**) before calling these functions. On return, if **fetestexcept**(**FE_INVALID** | **FE_DIVBYZERO** | **FE_OVERFLOW** | **FE_UNDERFLOW**) is non-zero, an exception has been raised. An application should either examine the return value or check the floating point exception flags to detect exceptions.

An application can also set **errno** to 0 before calling **asin()**. On return, if **errno** is non-zero, an error has occurred. The **asinf()** and **asinl()** functions do not set **errno**.

## ATTRIBUTES

See attributes(7) for descriptions of the following attributes:

## SEE ALSO

**math.h**(3HEAD), **matherr**(3M), **feclearexcept**(3M), **fetestexcept**(3M), **isnan**(3M), **sin**(3M), attributes(7), standards(7)