Spec-Zone.ru › C++

std::sqrt(std::complex)

Определено в заголовочном файле <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 Применяется к Опубликованное поведение Корректное поведение
LWG 2597 C++98 спецификация некорректно обрабатывает мнимые части со знаковым нулём ошибочное требование удалено

См. также

pow(std::complex)
комплексная степень; один или оба аргумента могут быть комплексными числами
(шаблон функции)
sqrtsqrtfsqrtl
(C++11)(C++11)
вычисляет квадратный корень (\(\small{\sqrt{x}}\)√x)
(функция)
sqrt(std::valarray)
применяет функцию std::sqrt к каждому элементу valarray
(шаблон функции)
Документация C для csqrt

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

Spec-Zone.ru

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