 # C acos()

The acos() function returns the arc cosine (inverse cosine) of a number in radians.

The `acos()` function takes a single argument (1 ≥ x ≥ -1), and returns the arc cosine in radians. Mathematically, `acos(x) = cos-1(x)`.

The `acos()` function is included in `<math.h>` header file.

### acos() Prototype

`double acos(double x);`

To find arc cosine of type `int`, `float` or `long double`, you can explicitly convert the type to `double` using cast operator.

``` int x = 0;
double result;
result = acos(double(x));```

Also, two functions acosf() and acosl() were introduced in C99 to work specifically with type `float` and `long double` respectively.

```float acosf(float x);
long double acosl(long double x);```

### acos() Parameter

The `acos()` function takes a single argument in the range of [-1, +1]. It's because the value of cosine is in the range of 1 and -1.

Parameter Description
double value Required. A double value between - 1 and +1 inclusive.

### acos() Return Value

The `acos()` functions returns the value in range of [0.0, π] in radians. If the parameter passed to the `acos()` function is less than -1 or greater than 1, the function returns NaN (not a number).

Parameter (x) Return Value
x = [-1, +1] [0, π] in radians
-1 > x or x > 1 NaN (not a number)

## Example 1: acos() function with different parameters

``````#include <stdio.h>
#include <math.h>

int main()
{
// constant PI is defined
const double PI =  3.1415926;
double x, result;

x =  -0.5;
result = acos(x);
printf("Inverse of cos(%.2f) = %.2lf in radians\n", x, result);

result = acos(x)*180/PI;
printf("Inverse of cos(%.2f) = %.2lf in degrees\n", x, result);

// paramter not in range
x = 1.2;
result = acos(x);
printf("Inverse of cos(%.2f) = %.2lf", x, result);

return 0;
}``````

Output

```Inverse of cos(-0.50) = 2.09 in radians
Inverse of cos(-0.50) = 120.00 in degrees
Inverse of cos(1.20) = nan
```

## Example 2: acosf() and acosl() function

``````#include <stdio.h>
#include <math.h>
int main()
{
float fx, facosx;
long double lx, ldacosx;

// arc cosine of type float
fx = -0.505405;
facosx = acosf(fx);

// arc cosine of type long double
lx = -0.50540593;
ldacosx = acosf(lx);

printf("acosf(x) = %f in radians\n", facosx);
printf("acosl(x) = %Lf in radians", ldacosx);

return 0;
}``````

Output

```acosf(x) = 2.100648 in radians