Namespaces
Variants

csqrtf, csqrt, csqrtl

From cppreference.net
Определено в заголовочном файле <complex.h>
float complex csqrtf ( float complex z ) ;
(1) (начиная с C99)
double complex csqrt ( double complex z ) ;
(2) (начиная с C99)
long double complex csqrtl ( long double complex z ) ;
(3) (начиная с C99)
Определено в заголовочном файле <tgmath.h>
#define sqrt( z )
(4) (начиная с C99)
1-3) Вычисляет комплексный квадратный корень из z с разрезом ветви вдоль отрицательной вещественной оси.
4) Тип-независимый макрос: Если z имеет тип long double complex , csqrtl вызывается. Если z имеет тип double complex , csqrt вызывается. Если z имеет тип float complex , csqrtf вызывается. Если z является вещественным или целочисленным, то макрос вызывает соответствующую вещественную функцию ( sqrtf , sqrt , sqrtl ). Если z является мнимым, вызывается соответствующая версия для комплексных чисел.

Содержание

Параметры

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

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

Если ошибок не возникает, возвращает квадратный корень из z , в области правой полуплоскости, включая мнимую ось ( [0; +∞) вдоль действительной оси и (−∞; +∞) вдоль мнимой оси.)

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

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

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

  • Функция непрерывна на разрезе ветви с учётом знака мнимой части
  • csqrt ( conj ( z ) ) == conj ( csqrt ( z ) )
  • Если z является ±0+0i , результат +0+0i
  • Если z является x+∞i , результат +∞+∞i даже если x равен NaN
  • Если z является x+NaNi , результат NaN+NaNi (если x не равен ±∞) и может быть возбуждено FE_INVALID
  • Если z является -∞+yi , результат +0+∞i для конечного положительного y
  • Если z является +∞+yi , результат +∞+0i) для конечного положительного y
  • Если z является -∞+NaNi , результат NaN±∞i (знак мнимой части не определён)
  • Если z является +∞+NaNi , результат +∞+NaNi
  • Если z является NaN+yi , результат NaN+NaNi и может быть возбуждено FE_INVALID
  • Если z является NaN+NaNi , результат NaN+NaNi

Пример

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double complex z1 = csqrt(-4);
    printf("Square root of -4 is %.1f%+.1fi\n", creal(z1), cimag(z1));
    double complex z2 = csqrt(conj(-4)); // or, in C11, CMPLX(-4, -0.0)
    printf("Square root of -4-0i, the other side of the cut, is "
           "%.1f%+.1fi\n", creal(z2), cimag(z2));
}

Вывод:

Square root of -4 is 0.0+2.0i
Square root of -4-0i, the other side of the cut, is 0.0-2.0i

Ссылки

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

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

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