C asin()

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
Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community