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