std::asin,std::asinf,std::asinl(3)

NAME
std::asin,std::asinf,std::asinl - std::asin,std::asinf,std::asinl

Synopsis
   Defined in header <cmath>
   float asin ( float arg );
   float asinf( float arg ); (since C++11)
   double asin ( double arg ); (1) (2)
   long double asin ( long double arg );
   long double asinl( long double arg ); (3) (since C++11)
   double asin ( IntegralType arg ); (4) (since C++11)
   1-3) Computes the principal value of the arc sine of arg.
   4) A set of overloads or a function template accepting an argument of any integral
   type. Equivalent to 2) (the argument is cast to double).

Parameters
   arg - value of a floating-point or Integral type

Return value
   If no errors occur, the arc sine of arg (arcsin(arg)) in the range [-
   π
   2
   , +
   π
   2
   ], is returned.
   If a domain error occurs, an implementation-defined value is returned (NaN where
   supported)
   If a range error occurs due to underflow, the correct result (after rounding) is
   returned.

Error handling
   Errors are reported as specified in math_errhandling.
   Domain error occurs if arg is outside the range [-1.0, 1.0]
   If the implementation supports IEEE floating-point arithmetic (IEC 60559),
     * If the argument is ±0, it is returned unmodified
     * If |arg| > 1, a domain error occurs and NaN is returned.
     * if the argument is NaN, NaN is returned

Example
// Run this code
 #include <cmath>
 #include <iostream>
 #include <cerrno>
 #include <cfenv>
 #include <cstring>
 #pragma STDC FENV_ACCESS ON
 int main()
 {
     std::cout << "asin(1.0) = " << asin(1) << '\n'
               << "2*asin(1.0) = " << 2*asin(1) << '\n'
               << "asin(-0.5) = " << asin(-0.5) << '\n'
               << "6*asin(-0.5) =" << 6*asin(-0.5) << '\n';
     // special values
     std::cout << "asin(0.0) = " << asin(0) << " asin(-0.0)=" << asin(-0.0) << '\n';
     // error handling
     errno = 0;
     std::feclearexcept(FE_ALL_EXCEPT);
     std::cout << "asin(1.1) = " << asin(1.1) << '\n';
     if (errno == EDOM)
         std::cout << " errno == EDOM: " << std::strerror(errno) << '\n';
     if (std::fetestexcept(FE_INVALID))
         std::cout << " FE_INVALID raised" << '\n';
 }

Possible output:
 asin(1.0) = 1.5708
 2*asin(1.0) = 3.14159
 asin(-0.5) = -0.523599
 6*asin(-0.5) = -3.14159
 asin(0.0) = 0 asin(-0.0)=-0
 asin(1.1) = nan
     errno == EDOM: Numerical argument out of domain
     FE_INVALID raised

See also
   acos
   acosf computes arc cosine (\({\small\arccos{x} }\)arccos(x))
   acosl (function)
   (C++11)
   (C++11)
   atan
   atanf computes arc tangent (\({\small\arctan{x} }\)arctan(x))
   atanl (function)
   (C++11)
   (C++11)
   atan2
   atan2f arc tangent, using signs to determine quadrants
   atan2l (function)
   (C++11)
   (C++11)
   sin
   sinf computes sine (\({\small\sin{x} }\)sin(x))
   sinl (function)
   (C++11)
   (C++11)
   asin(std::complex) computes arc sine of a complex number (\({\small\arcsin{z}
   (C++11) }\)arcsin(z))
                       (function template)
   asin(std::valarray) applies the function std::asin to each element of valarray
                       (function template)