Go to the previous, next section.

## Inverse Trigonometric Functions

These are the usual arc sine, arc cosine and arc tangent functions, which are the inverses of the sine, cosine and tangent functions, respectively.

Function: double asin (double x)

This function computes the arc sine of x---that is, the value whose sine is x. The value is in units of radians. Mathematically, there are infinitely many such values; the one actually returned is the one between `-pi/2` and `pi/2` (inclusive).

`asin` fails, and sets `errno` to `EDOM`, if x is out of range. The arc sine function is defined mathematically only over the domain `-1` to `1`.

Function: double acos (double x)

This function computes the arc cosine of x---that is, the value whose cosine is x. The value is in units of radians. Mathematically, there are infinitely many such values; the one actually returned is the one between `0` and `pi` (inclusive).

`acos` fails, and sets `errno` to `EDOM`, if x is out of range. The arc cosine function is defined mathematically only over the domain `-1` to `1`.

Function: double atan (double x)

This function computes the arc tangent of x---that is, the value whose tangent is x. The value is in units of radians. Mathematically, there are infinitely many such values; the one actually returned is the one between `-pi/2` and `pi/2` (inclusive).

Function: double atan2 (double y, double x)

This is the two argument arc tangent function. It is similar to computing the arc tangent of y/x, except that the signs of both arguments are used to determine the quadrant of the result, and x is permitted to be zero. The return value is given in radians and is in the range `-pi` to `pi`, inclusive.

If x and y are coordinates of a point in the plane, `atan2` returns the signed angle between the line from the origin to that point and the x-axis. Thus, `atan2` is useful for converting Cartesian coordinates to polar coordinates. (To compute the radial coordinate, use `hypot`; see section Exponentiation and Logarithms.)

The function `atan2` sets `errno` to `EDOM` if both x and y are zero; the return value is not defined in this case.

Go to the previous, next section.