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/w/cpp/numeric/complex/sqrt

Spec-Zone.ru

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