Namespaces
Variants

catanf, catan, catanl

From cppreference.net
Определено в заголовке <complex.h>
float complex catanf ( float complex z ) ;
(1) (начиная с C99)
double complex catan ( double complex z ) ;
(2) (начиная с C99)
long double complex catanl ( long double complex z ) ;
(3) (начиная с C99)
Определено в заголовке <tgmath.h>
#define atan( z )
(4) (начиная с C99)
1-3) Вычисляет комплексный арктангенс z с разрезами ветвей вне интервала [−i,+i] вдоль мнимой оси.
4) Обобщённый макрос: Если z имеет тип long double complex , catanl вызывается. Если z имеет тип double complex , catan вызывается. Если z имеет тип float complex , catanf вызывается. Если z является вещественным или целочисленным, то макрос вызывает соответствующую вещественную функцию ( atanf , atan , atanl ). Если z является мнимым, то макрос вызывает соответствующую вещественную версию функции atanh , реализуя формулу atan(iy) = i atanh(y) , и возвращаемый тип макроса является мнимым.

Содержание

Параметры

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

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

Если ошибок не возникает, возвращается комплексный арктангенс z в пределах полосы, неограниченной вдоль мнимой оси и в интервале [−π/2; +π/2] вдоль действительной оси.

Ошибки и особые случаи обрабатываются так, как если бы операция была реализована с помощью - I * catanh ( I * z ) .

Примечания

Арктангенс является многозначной функцией и требует разреза на комплексной плоскости. Разрез традиционно проводится по отрезкам (-∞i,-i) и (+i,+∞i) мнимой оси.

The mathematical definition of the principal value of inverse tangent is atan z = -
1
2
i [ln(1 - iz) - ln (1 + iz)]

Пример

#include <stdio.h>
#include <float.h>
#include <complex.h>
int main(void)
{
    double complex z = catan(2*I);
    printf("catan(+0+2i) = %f%+fi\n", creal(z), cimag(z));
    double complex z2 = catan(-conj(2*I)); // or CMPLX(-0.0, 2)
    printf("catan(-0+2i) (the other side of the cut) = %f%+fi\n", creal(z2), cimag(z2));
    double complex z3 = 2*catan(2*I*DBL_MAX); // or CMPLX(0, INFINITY)
    printf("2*catan(+0+i*Inf) = %f%+fi\n", creal(z3), cimag(z3));
}

Вывод:

catan(+0+2i) = 1.570796+0.549306i
catan(-0+2i) (the other side of the cut) = -1.570796+0.549306i
2*catan(+0+i*Inf) = 3.141593+0.000000i

Ссылки

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

Смотри также

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