acos, acosf, acosl
Определено в заголовке <math.h> | ||
|---|---|---|
float acosf( float arg ); | (1) | (с C99) |
double acos( double arg ); | (2) | |
long double acosl( long double arg ); | (3) | (с C99) |
_Decimal32 acosd32( _Decimal32 arg ); | (4) | (с C23) |
_Decimal64 acosd64( _Decimal64 arg ); | (5) | (с C23) |
_Decimal128 acosd128( _Decimal128 arg ); | (6) | (с C23) |
Определено в заголовке <tgmath.h> | ||
#define acos( arg ) | (7) | (с C99) |
arg.long double, вызывается (3) (acosl). В противном случае, если аргумент имеет целочисленный тип или тип double, вызывается (2) (acos). В противном случае, вызывается (1) (acosf). Если аргумент комплексный, макрос вызывает соответствующую комплексную функцию (cacosf, cacos, cacosl).| Функции (4-6) объявляются только в том случае, если реализация предопределяет | (с C23) |
Параметры
| arg | - | значение с плавающей точкой |
Возвращаемое значение
Если ошибок нет, возвращается арккосинус arg (arccos(arg)) в диапазоне [0; π].
Если произошла ошибка области определения, возвращается значение, определенное реализацией (NaN, если поддерживается).
Если произошла ошибка диапазона из-за подпотока, возвращается правильный результат (после округления).
Обработка ошибок
Ошибки сообщаются в соответствии со спецификациями в math_errhandling.
Ошибка области определения происходит, если arg находится вне диапазона [-1.0; 1.0].
Если реализация поддерживает арифметику с плавающей точкой IEEE (IEC 60559):
- Если аргумент равен +1, возвращается значение
+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("acos(-1) = %f\n", acos(-1));
printf("acos(0.0) = %f 2*acos(0.0) = %f\n", acos(0), 2 * acos(0));
printf("acos(0.5) = %f 3*acos(0.5) = %f\n", acos(0.5), 3 * acos(0.5));
printf("acos(1) = %f\n", acos(1));
// error handling
errno = 0; feclearexcept(FE_ALL_EXCEPT);
printf("acos(1.1) = %f\n", acos(1.1));
if (errno == EDOM)
perror(" errno == EDOM");
if (fetestexcept(FE_INVALID))
puts(" FE_INVALID raised");
}Возможный вывод:
acos(-1) = 3.141593
acos(0.0) = 1.570796 2*acos(0.0) = 3.141593
acos(0.5) = 1.047198 3*acos(0.5) = 3.141593
acos(1) = 0.000000
acos(1.1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raisedСсылки
- Стандарт C23 (ISO/IEC 9899:2023):
- 7.12.4.1 Функции acos (p: TBD)
- 7.25 Универсальные математические функции <tgmath.h> (p: TBD)
- F.10.1.1 Функции acos (p: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.12.4.1 Функции acos (p: 173)
- 7.25 Универсальные математические функции <tgmath.h> (p: 272-273)
- F.10.1.1 Функции acos (p: 378)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.12.4.1 Функции acos (p: 238)
- 7.25 Универсальные математические функции <tgmath.h> (p: 373-375)
- F.10.1.1 Функции acos (p: 518)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.12.4.1 Функции acos (p: 218)
- 7.22 Универсальные математические функции <tgmath.h> (p: 335-337)
- F.9.1.1 Функции acos (p: 455)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.5.2.1 Функция acos
См. также
|
(C99)(C99) | вычисляет арксинус (\({\small\arcsin{x} }\)arcsin(x)) (функция) |
|
(C99)(C99) | вычисляет арктангенс (\({\small\arctan{x} }\)arctan(x)) (функция) |
|
(C99)(C99) | вычисляет арктангенс, используя знаки для определения квадрантов (функция) |
|
(C99)(C99) | вычисляет косинус (\({\small\cos{x} }\)cos(x)) (функция) |
|
(C99)(C99)(C99) | вычисляет комплексный арккосинус (функция) |
Документация C++ для acos |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/acos