Поделиться через


acos, , acosfacosl

Вычисляет арккосинус.

Синтаксис

double acos( double x );
float acosf( float x );
long double acosl( long double x );
#define acos(X) // Requires C11 or higher

float acos( float x );   // C++ only
long double acos( long double x );   // C++ only

Параметры

x
Значение от -1 до 1, для которого вычисляется arccosine (обратный косинус).

Возвращаемое значение

Функция acos возвращает арккосинус x в диапазоне от 0 до радиан π.

По умолчанию, если x значение меньше -1 или больше 1, acos возвращает неограниченное значение.

Входные данные Исключение SEH Исключение _matherr
± INF INVALID _DOMAIN
± QNaN, IND ничего _DOMAIN
|x| > 1 INVALID _DOMAIN

Замечания

Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции acos, принимающие и возвращающие типы float и long double. В программе C, если вы не используете <tgmath.h> макрос для вызова этой функции, acos всегда принимает и возвращает значение double.

Если вы используете acos макрос из <tgmath.h>, тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе "Математика с универсальным типом".

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок Необязательные заголовки
acos, , acosfacosl <math.h> <errno.h>
acosМакрос <tgmath.h>

Пример

Эта программа предлагает ввести значение в диапазоне от -1 до 1. Входные значения вне этого диапазона вызывают сообщения об ошибке _DOMAIN. Если введено допустимое значение, программа выводит на экран арксинус и арккосинус этого значения.

// crt_asincos.c
// arguments: 0

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main( int ac, char* av[] )
{
    double  x,
            y;
    errno_t err;

    // argument checking
    if (ac != 2)
    {
        fprintf_s( stderr, "Usage: %s <number between -1 and 1>\n",
                   av[0]);
        return 1;
    }

    // Convert argument into a double value
    if ((err = sscanf_s( av[1], "%lf", &x )) != 1)
    {
        fprintf_s( stderr, "Error converting argument into ",
                   "double value.\n");
        return 1;
    }

    // Arcsine of X
    y = asin( x );
    printf_s( "Arcsine of %f = %f\n", x, y );

    // Arccosine of X
    y = acos( x );
    printf_s( "Arccosine of %f = %f\n", x, y );
}
Arcsine of 0.000000 = 0.000000
Arccosine of 0.000000 = 1.570796

См. также

Поддержка математических и плавающих точек
asin, , asinfasinl
atan, , atanfatan2atanlatan2f,atan2l
cos, , cosfcosl
_matherr
sin, , sinfsinl
tan, , tanftanl