Namespaces
Variants

ctanhf, ctanh, ctanhl

From cppreference.net
Определено в заголовке <complex.h>
float complex ctanhf ( float complex z ) ;
(1) (начиная с C99)
double complex ctanh ( double complex z ) ;
(2) (начиная с C99)
long double complex ctanhl ( long double complex z ) ;
(3) (начиная с C99)
Определено в заголовке <tgmath.h>
#define tanh( z )
(4) (начиная с C99)
1-3) Вычисляет комплексный гиперболический тангенс z .
4) Типонезависимый макрос: Если z имеет тип long double complex , ctanhl вызывается. Если z имеет тип double complex , ctanh вызывается. Если z имеет тип float complex , ctanhf вызывается. Если z вещественный или целочисленный, то макрос вызывает соответствующую вещественную функцию ( tanhf , tanh , tanhl ). Если z мнимый, то макрос вызывает соответствующую вещественную версию функции tan , реализуя формулу tanh(iy) = i tan(y) , и возвращаемый тип является мнимым.

Содержание

Параметры

z - комплексный аргумент

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

Если ошибок не возникает, возвращается комплексный гиперболический тангенс z

Обработка ошибок и специальные значения

Ошибки сообщаются в соответствии с math_errhandling

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

  • ctanh ( conj ( z ) ) == conj ( ctanh ( z ) )
  • ctanh ( - z ) == - ctanh ( z )
  • Если z равно +0+0i , результат равен +0+0i
  • Если z равно x+∞i (для любого [1] конечного x), результат равен NaN+NaNi и возбуждается FE_INVALID
  • Если z равно x+NaN (для любого [2] конечного x), результат равен NaN+NaNi и может быть возбуждено FE_INVALID
  • Если z равно +∞+yi (для любого конечного положительного y), результат равен 1+0i
  • Если z равно +∞+∞i , результат равен 1±0i (знак мнимой части не определён)
  • Если z равно +∞+NaNi , результат равен 1±0i (знак мнимой части не определён)
  • Если z равно NaN+0i , результат равен NaN+0i
  • Если z равно NaN+yi (для любого ненулевого y), результат равен NaN+NaNi и может быть возбуждено FE_INVALID
  • Если z равно NaN+NaNi , результат равен NaN+NaNi
  1. согласно DR471 , это верно только для ненулевого x. Если z равно 0+∞i , результат должен быть 0+NaNi
  2. согласно DR471 , это верно только для ненулевого x. Если z равно 0+NaNi , результат должен быть 0+NaNi

Примечания

Mathematical definition of hyperbolic tangent is tanh z =
e z
-e -z
e z
+e -z

Гиперболический тангенс является аналитической функцией на комплексной плоскости и не имеет точек ветвления. Он периодичен относительно мнимой компоненты с периодом πi и имеет полюсы первого порядка вдоль мнимой оси в координатах (0, π(1/2 + n)) . Однако ни одно распространенное представление с плавающей запятой не может точно представить π/2, поэтому не существует значения аргумента, при котором возникает ошибка полюса.

Пример

#include <stdio.h>
#include <math.h>
#include <complex.h>
int main(void)
{
    double complex z = ctanh(1);  // ведет себя как вещественный tanh вдоль вещественной оси
    printf("tanh(1+0i) = %f%+fi (tanh(1)=%f)\n", creal(z), cimag(z), tanh(1));
    double complex z2 = ctanh(I); // ведет себя как тангенс вдоль мнимой оси
    printf("tanh(0+1i) = %f%+fi ( tan(1)=%f)\n", creal(z2), cimag(z2), tan(1));
}

Вывод:

tanh(1+0i) = 0.761594+0.000000i (tanh(1)=0.761594)
tanh(0+1i) = 0.000000+1.557408i ( tan(1)=1.557408)

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.3.6.6 Функции ctanh (стр. 194)
  • 7.25 Обобщенная математика <tgmath.h> (стр. 373-375)
  • G.6.2.6 Функции ctanh (стр. 542)
  • G.7 Обобщенная математика <tgmath.h> (стр. 545)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.3.6.6 Функции ctanh (стр. 176)
  • 7.22 Обобщенная математика <tgmath.h> (стр. 335-337)
  • G.6.2.6 Функции ctanh (стр. 477)
  • G.7 Обобщенная математика <tgmath.h> (стр. 480)

Смотрите также

(C99) (C99) (C99)
вычисляет комплексный гиперболический синус
(функция)
(C99) (C99) (C99)
вычисляет комплексный гиперболический косинус
(функция)
(C99) (C99) (C99)
вычисляет комплексный гиперболический арктангенс
(функция)
(C99) (C99)
вычисляет гиперболический тангенс ( tanh(x) )
(функция)