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 | спецификация некорректно обрабатывает мнимые части со знаковым нулём | ошибочное требование удалено |
См. также
| комплексная степень; один или оба аргумента могут быть комплексными числами (шаблон функции) |
|
|
(C++11)(C++11) | вычисляет квадратный корень (\(\small{\sqrt{x}}\)√x) (функция) |
применяет функцию 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