Spec-Zone.ru › C

csqrtf, csqrt, csqrtl

Defined in header <complex.h>
float complex       csqrtf( float complex z );
(1) (since C99)
double complex      csqrt( double complex z );
(2) (since C99)
long double complex csqrtl( long double complex z );
(3) (since C99)
Defined in header <tgmath.h>
#define sqrt( z )
(4) (since 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)

См. также

cpowcpowfcpowl
(C99)(C99)(C99)
вычисляет комплексную степенную функцию
(функция)
sqrtsqrtfsqrtl
(C99)(C99)
вычисляет квадратный корень (\(\small{\sqrt{x} }\)√x)
(функция)
Документация C++ для sqrt

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

Spec-Zone.ru

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