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)
См. также
|
(C99)(C99)(C99) |
вычисляет комплексную степенную функцию (функция) |
|
(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