The asin()
function takes a single argument (1 ≥ x ≥ -1), and returns the arc sine in radians. Mathematically, asin(x) = sin-1(x)
.
The asin()
function is included in <math.h>
header file.
asin() Prototype
double asin(double x);
To find arc sine of type int
, float
or long double
, you can explicitly convert the type to double
using cast operator.
int x = 0; double result; result = asin(double(x));
Also, two functions asinf() and asinl() were introduced in C99 to work specifically with type float
and long double
respectively.
float asinf(float x); long double asinl(long double x);
asin() Parameter
The asin()
function takes a single argument in the range of [-1, +1]. It's because the value of sine is in the range of 1 and -1.
Parameter | Description |
---|---|
double value | Required. A double value between - 1 and +1 inclusive. |
asin() Return Value
The asin()
functions returns the value in range of [-π/2, +π/2] in radians. If the parameter passed to the asin()
function is less than -1 or greater than 1, the function returns NaN (not a number).
Parameter (x) | Return Value |
---|---|
x = [-1, +1] | [-π/2, +π/2] in radians |
-1 > x or x > 1 | NaN (not a number) |
Example 1: asin() 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 = asin(x);
printf("Inverse of sin(%.2f) = %.2lf in radians\n", x, result);
// converting radians to degree
result = asin(x)*180/PI;
printf("Inverse of sin(%.2f) = %.2lf in degrees\n", x, result);
// paramter not in range
x = 1.2;
result = asin(x);
printf("Inverse of sin(%.2f) = %.2lf", x, result);
return 0;
}
Output
Inverse of sin(-0.50) = -0.52 in radians Inverse of sin(-0.50) = -30.00 in degrees Inverse of sin(1.20) = nan
Example 2: asinf() and asinl() function
#include <stdio.h>
#include <math.h>
int main()
{
float fx, fasinx;
long double lx, ldasinx;
// arc sinine of type float
fx = -0.505405;
fasinx = asinf(fx);
// arc sinine of type long double
lx = -0.50540593;
ldasinx = asinf(lx);
printf("asinf(x) = %f in radians\n", fasinx);
printf("asinl(x) = %Lf in radians", ldasinx);
return 0;
}
Output
asinf(x) = -0.529851 in radians asinl(x) = -0.529852 in radians