Spec-Zone.ru › C

tan, tanf, tanl

Определено в заголовке <math.h>
float       tanf( float arg );
(1) (с C99)
double      tan( double arg );
(2)
long double tanl( long double arg );
(3) (с C99)
_Decimal32  tand32( _Decimal32 arg );
(4) (с C23)
_Decimal64  tand64( _Decimal64 arg );
(5) (с C23)
_Decimal128 tand128( _Decimal128 arg );
(6) (с C23)
Определено в заголовке <tgmath.h>
#define tan( arg )
(7) (с C99)
1-6) Вычисляет тангенс arg (измеряемый в радианах).
7) Универсальный макрос типа: Если аргумент имеет тип long double, вызывается (3) (tanl). В противном случае, если аргумент имеет целочисленный тип или тип double, вызывается (2) (tan). В противном случае, вызывается (1) (tanf). Если аргумент является комплексным, макрос вызывает соответствующую комплексную функцию (ctanf, ctan, ctanl).

Функции (4-6) объявляются только в том случае, если реализация предварительно определяет __STDC_IEC_60559_DFP__ (т.е. реализация поддерживает десятичные числа с плавающей запятой).

(с C23)

Параметры

arg - значение с плавающей точкой, представляющее угол в радианах

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

Если ошибки не возникло, возвращается тангенс arg (tan(arg)).

Результат может иметь малое или вообще не иметь значения, если модуль arg велик.

(до C99)

Если возникает ошибка области определения, возвращается определённое реализацией значение (NaN, если поддерживается).

Если возникает ошибка диапазона из-за подпотока, возвращается правильный результат (после округления).

Обработка ошибок

Ошибки сообщаются так, как указано в math_errhandling.

Если реализация поддерживает арифметику с плавающей запятой IEEE (IEC 60559):

  • если аргумент равен ±0, он возвращается без изменений;
  • если аргумент равен ±∞, возвращается NaN и поднимается FE_INVALID ;
  • если аргумент равен NaN, возвращается NaN.

Примечания

Случай, когда аргумент бесконечен, не указан как ошибка области определения в C, но он определяется как ошибка области определения в POSIX.

Функция имеет математические полюса в π(1/2 + n); однако ни одна распространённая система представления чисел с плавающей запятой не способна точно представить π/2, поэтому нет значения аргумента, для которого возникает ошибка полюса.

Пример

#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
 
#ifndef __GNUC__
#pragma STDC FENV_ACCESS ON
#endif
 
int main(void)
{
    const double pi = acos(-1);
 
    // typical usage
    printf("tan(pi*1/4) = %+f\n", tan(pi * 1 / 4)); //   45 deg
    printf("tan(pi*3/4) = %+f\n", tan(pi * 3 / 4)); //  135 deg
    printf("tan(pi*5/4) = %+f\n", tan(pi * 5 / 4)); // -135 deg
    printf("tan(pi*7/4) = %+f\n", tan(pi * 7 / 4)); //  -45 deg
 
    // special values
    printf("tan(+0) = %f\n", tan(0.0));
    printf("tan(-0) = %f\n", tan(-0.0));
 
    // error handling
    feclearexcept(FE_ALL_EXCEPT);
    printf("tan(INFINITY) = %f\n", tan(INFINITY));
    if (fetestexcept(FE_INVALID))
        puts("    FE_INVALID raised");
}

Возможный вывод:

tan(pi*1/4) = +1.000000
tan(pi*3/4) = -1.000000
tan(pi*5/4) = +1.000000
tan(pi*7/4) = -1.000000
tan(+0) = 0.000000
tan(-0) = -0.000000
tan(INFINITY) = -nan
    FE_INVALID raised

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2023):
    • 7.12.4.7 Функции tan (стр.: TBD)
    • 7.25 Универсальный математический тип <tgmath.h> (стр.: TBD)
    • F.10.1.7 Функции tan (стр.: TBD)
  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.12.4.7 Функции tan (стр.: 175)
    • 7.25 Универсальный математический тип <tgmath.h> (стр.: 272-273)
    • F.10.1.7 Функции tan (стр.: 378)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.12.4.7 Функции tan (стр.: 240)
    • 7.25 Универсальный математический тип <tgmath.h> (стр.: 373-375)
    • F.10.1.7 Функции tan (стр.: 519)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.12.4.7 Функции tan (стр.: 220)
    • 7.22 Универсальный математический тип <tgmath.h> (стр.: 335-337)
    • F.9.1.7 Функции tan (стр.: 457)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.5.2.7 Функция tan

См. также

sinsinfsinl
(C99)(C99)
вычисляет синус (\({\small\sin{x} }\)sin(x))
(функция)
coscosfcosl
(C99)(C99)
вычисляет косинус (\({\small\cos{x} }\)cos(x))
(функция)
atanatanfatanl
(C99)(C99)
вычисляет арктангенс (\({\small\arctan{x} }\)arctan(x))
(функция)
ctanctanfctanl
(C99)(C99)(C99)
вычисляет комплексный тангенс
(функция)
Документация C++ для tan

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/math/tan

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API