Defined in header <cmath> | ||
---|---|---|
(1) | ||
float asin ( float num ); double asin ( double num ); long double asin ( long double num ); | (until C++23) | |
/* floating-point-type */ asin ( /* floating-point-type */ num ); | (since C++23) (constexpr since C++26) | |
float asinf( float num ); | (2) | (since C++11) (constexpr since C++26) |
long double asinl( long double num ); | (3) | (since C++11) (constexpr since C++26) |
Additional overloads (since C++11) | ||
Defined in header <cmath> | ||
template< class Integer > double asin ( Integer num ); | (A) | (constexpr since C++26) |
num
. The library provides overloads of std::asin
for all cv-unqualified floating-point types as the type of the parameter. (since C++23)
double | (since C++11) |
num | - | floating-point or integer value |
num
(arcsin(num)) 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.
Errors are reported as specified in math_errhandling
.
Domain error occurs if num
is outside the range [
-1.0
,
1.0
]
.
If the implementation supports IEEE floating-point arithmetic (IEC 60559),
The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that for their argument num
of integer type, std::asin(num)
has the same effect as std::asin(static_cast<double>(num))
.
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #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
(C++11)(C++11) | computes arc cosine (\({\small\arccos{x} }\)arccos(x)) (function) |
(C++11)(C++11) | computes arc tangent (\({\small\arctan{x} }\)arctan(x)) (function) |
(C++11)(C++11) | arc tangent, using signs to determine quadrants (function) |
(C++11)(C++11) | computes sine (\({\small\sin{x} }\)sin(x)) (function) |
(C++11) | computes arc sine of a complex number (\({\small\arcsin{z} }\)arcsin(z)) (function template) |
applies the function std::asin to each element of valarray (function template) |
|
C documentation for asin |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/math/asin