std:: log (std::complex)
|
Определено в заголовочном файле
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > log ( const std:: complex < T > & z ) ; |
||
Вычисляет комплексный натуральный (по основанию e ) логарифм комплексного значения z с разрезом ветви вдоль отрицательной вещественной оси.
Содержание |
Параметры
| z | - | комплексное значение |
Возвращаемое значение
Если ошибок не возникает, возвращается комплексный натуральный логарифм z в диапазоне полосы в интервале [−iπ, +iπ] вдоль мнимой оси и математически неограниченный вдоль вещественной оси.
Обработка ошибок и специальные значения
Ошибки сообщаются в соответствии с math_errhandling .
Если реализация поддерживает арифметику с плавающей точкой IEEE,
- Функция непрерывна на разрезе ветви с учётом знака мнимой части
- std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
-
Если
z
равен
(-0,+0), результат равен(-∞,π)и возбуждается FE_DIVBYZERO -
Если
z
равен
(+0,+0), результат равен(-∞,+0)и возбуждается FE_DIVBYZERO -
Если
z
равен
(x,+∞)(для любого конечного x), результат равен(+∞,π/2) -
Если
z
равен
(x,NaN)(для любого конечного x), результат равен(NaN,NaN)и может быть возбуждено FE_INVALID -
Если
z
равен
(-∞,y)(для любого конечного положительного y), результат равен(+∞,π) -
Если
z
равен
(+∞,y)(для любого конечного положительного y), результат равен(+∞,+0) -
Если
z
равен
(-∞,+∞), результат равен(+∞,3π/4) -
Если
z
равен
(+∞,+∞), результат равен(+∞,π/4) -
Если
z
равен
(±∞,NaN), результат равен(+∞,NaN) -
Если
z
равен
(NaN,y)(для любого конечного y), результат равен(NaN,NaN)и может быть возбуждено FE_INVALID -
Если
z
равен
(NaN,+∞), результат равен(+∞,NaN) -
Если
z
равен
(NaN,NaN), результат равен(NaN,NaN)
Примечания
Натуральный логарифм комплексного числа z с компонентами полярных координат (r,θ) равен ln r + i(θ+2nπ) , с главным значением ln r + iθ .
Семантика этой функции предназначена быть согласованной с функцией C clog .
Пример
#include <cmath> #include <complex> #include <iostream> int main() { std::complex<double> z {0.0, 1.0}; // r = 1, θ = pi / 2 std::cout << "2 * log" << z << " = " << 2.0 * std::log(z) << '\n'; std::complex<double> z2 {sqrt(2.0) / 2, sqrt(2.0) / 2}; // r = 1, θ = pi / 4 std::cout << "4 * log" << z2 << " = " << 4.0 * std::log(z2) << '\n'; std::complex<double> z3 {-1.0, 0.0}; // r = 1, θ = pi std::cout << "log" << z3 << " = " << std::log(z3) << '\n'; std::complex<double> z4 {-1.0, -0.0}; // the other side of the cut std::cout << "log" << z4 << " (the other side of the cut) = " << std::log(z4) << '\n'; }
Возможный вывод:
2 * log(0,1) = (0,3.14159) 4 * log(0.707107,0.707107) = (0,3.14159) log(-1,0) = (0,3.14159) log(-1,-0) (the other side of the cut) = (0,-3.14159)
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2597 | C++98 | спецификация некорректно обрабатывает знаковые нулевые мнимые части | ошибочное требование удалено |
Смотрите также
|
комплексный десятичный логарифм с разрезом ветви вдоль отрицательной вещественной оси
(шаблон функции) |
|
|
комплексная экспонента по основанию
e
(шаблон функции) |
|
|
(C++11)
(C++11)
|
вычисляет натуральный логарифм (по основанию
e
) (
ln(x)
)
(функция) |
|
применяет функцию
std::log
к каждому элементу valarray
(шаблон функции) |
|
|
Документация C
для
clog
|
|