Spec-Zone.ru › C

csqrtf, csqrt, csqrtl

Определено в заголовочном файле <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)

См. также

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/c/numeric/complex/csqrt

Spec-Zone.ru

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