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);
// converting radians to degree
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 acosl(x) = 2.100649 in radians