Namespaces
Variants

std:: sqrt (std::complex)

From cppreference.net
Определено в заголовочном файле <complex>
template < class T >
std:: complex < T > sqrt ( const std:: complex < T > & z ) ;

Вычисляет квадратный корень комплексного числа z с разрезом ветви вдоль отрицательной вещественной оси.

Содержание

Параметры

z - комплексное число, из которого извлекается квадратный корень

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

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

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

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

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

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

Примечания

Семантика этой функции предназначена быть согласованной с функцией C csqrt .

Пример

#include <complex>
#include <iostream>
int main()
{
    std::cout << "Square root of -4 is "
              << std::sqrt(std::complex<double>(-4.0, 0.0)) << '\n'
              << "Square root of (-4,-0) is "
              << std::sqrt(std::complex<double>(-4.0, -0.0))
              << " (the other side of the cut)\n";
}

Вывод:

Square root of -4 is (0,2)
Square root of (-4,-0) is (0,-2) (the other side of the cut)

Отчеты о дефектах

Следующие отчеты об изменениях в поведении, содержащие описания дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2597 C++98 спецификация некорректно обрабатывает знаковые нулевые мнимые части ошибочное требование удалено

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

комплексное возведение в степень, один или оба аргумента могут быть комплексными числами
(шаблон функции)
(C++11) (C++11)
вычисляет квадратный корень ( x )
(функция)
применяет функцию std::sqrt к каждому элементу valarray
(шаблон функции)