asin, asinf, asinl
Определено в заголовке <math.h> | ||
|---|---|---|
float asinf( float arg ); | (1) | (с C99) |
double asin( double arg ); | (2) | |
long double asinl( long double arg ); | (3) | (с C99) |
_Decimal32 asind32( _Decimal32 arg ); | (4) | (с C23) |
_Decimal64 asind64( _Decimal64 arg ); | (5) | (с C23) |
_Decimal128 asind128( _Decimal128 arg ); | (6) | (с C23) |
Определено в заголовке <tgmath.h> | ||
#define asin( arg ) | (7) | (с C99) |
arg.long double, вызывается (3) (asinl). В противном случае, если аргумент имеет целочисленный тип или тип double, вызывается (2) (asin). В противном случае вызывается (1) (asinf). Если аргумент комплексный, то макрос вызывает соответствующую комплексную функцию (casinf, casin, casinl).| Функции (4-6) объявлены только в том случае, если реализация предварительно определяет | (с C23) |
Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибок не произошло, возвращается арксинусarg (arcsin(arg)) в диапазоне [-π/2 ; +π/2]. Если произошла ошибка области определения, возвращается определённое реализацией значение (NaN при поддержке).
Если происходит ошибка диапазона из-за подтекания, возвращается правильный результат (после округления).
Обработка ошибок
Ошибки сообщаются согласно спецификации math_errhandling.
Ошибка области определения возникает, если arg находится вне диапазона [-1.0; 1.0].
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559):
- если аргумент равен ±0, он возвращается без изменений;
- если |arg| > 1, происходит ошибка области определения и возвращается NaN;
- если аргумент равен NaN, возвращается NaN.
Пример
#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#ifndef __GNUC__
#pragma STDC FENV_ACCESS ON
#endif
int main(void)
{
printf("asin( 1.0) = %+f, 2*asin( 1.0)=%+f\n", asin(1), 2 * asin(1));
printf("asin(-0.5) = %+f, 6*asin(-0.5)=%+f\n", asin(-0.5), 6 * asin(-0.5));
// special values
printf("asin(0.0) = %1f, asin(-0.0)=%f\n", asin(+0.0), asin(-0.0));
// error handling
errno = 0; feclearexcept(FE_ALL_EXCEPT);
printf("asin(1.1) = %f\n", asin(1.1));
if (errno == EDOM)
perror(" errno == EDOM");
if (fetestexcept(FE_INVALID))
puts(" FE_INVALID raised");
}Возможный вывод:
asin( 1.0) = +1.570796, 2*asin( 1.0)=+3.141593
asin(-0.5) = -0.523599, 6*asin(-0.5)=-3.141593
asin(0.0) = 0.000000, asin(-0.0)=-0.000000
asin(1.1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raisedСсылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 7.12.4.2 Функции asin (p: TBD)
- 7.25 Универсальные математические функции <tgmath.h> (p: TBD)
- F.10.1.2 Функции asin (p: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.4.2 Функции asin (p: 174)
- 7.25 Универсальные математические функции <tgmath.h> (p: 272-273)
- F.10.1.2 Функции asin (p: 378)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.4.2 Функции asin (p: 238)
- 7.25 Универсальные математические функции <tgmath.h> (p: 373-375)
- F.10.1.2 Функции asin (p: 518)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.4.2 Функции asin (p: 219)
- 7.22 Универсальные математические функции <tgmath.h> (p: 335-337)
- F.9.1.2 Функции asin (p: 456)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.5.2.2 Функция asin
См. также
|
(C99)(C99) | вычисляет арккосинус (\({\small\arccos{x} }\)\(arccos(x)\)) (функция) |
|
(C99)(C99) | вычисляет арктангенс (\({\small\arctan{x} }\)\(arctan(x)\)) (функция) |
|
(C99)(C99) | вычисляет арктангенс, используя знаки для определения квадрантов (функция) |
|
(C99)(C99) | вычисляет синус (\({\small\sin{x} }\)\(sin(x)\)) (функция) |
|
(C99)(C99)(C99) | вычисляет комплексный арксинус (функция) |
Документация C++ для asin |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/asin