std:: log (std::complex)
|
Definido en el encabezado
<complex>
|
||
|
template
<
class
T
>
std:: complex < T > log ( const std:: complex < T > & z ) ; |
||
Calcula el logaritmo natural (base e ) complejo de un valor complejo z con un corte de rama a lo largo del eje real negativo.
Contenidos |
Parámetros
| z | - | valor complejo |
Valor de retorno
Si no ocurren errores, se devuelve el logaritmo natural complejo de z , en el rango de una franja en el intervalo [−iπ, +iπ] a lo largo del eje imaginario y matemáticamente ilimitado a lo largo del eje real.
Manejo de errores y valores especiales
Los errores se reportan de manera consistente con math_errhandling .
Si la implementación admite aritmética de punto flotante IEEE,
- La función es continua sobre el corte de rama teniendo en cuenta el signo de la parte imaginaria
- std:: log ( std:: conj ( z ) ) == std:: conj ( std:: log ( z ) )
-
Si
z
es
(-0,+0), el resultado es(-∞,π)y se genera FE_DIVBYZERO -
Si
z
es
(+0,+0), el resultado es(-∞,+0)y se genera FE_DIVBYZERO -
Si
z
es
(x,+∞)(para cualquier x finito), el resultado es(+∞,π/2) -
Si
z
es
(x,NaN)(para cualquier x finito), el resultado es(NaN,NaN)y puede generarse FE_INVALID -
Si
z
es
(-∞,y)(para cualquier y positivo finito), el resultado es(+∞,π) -
Si
z
es
(+∞,y)(para cualquier y positivo finito), el resultado es(+∞,+0) -
Si
z
es
(-∞,+∞), el resultado es(+∞,3π/4) -
Si
z
es
(+∞,+∞), el resultado es(+∞,π/4) -
Si
z
es
(±∞,NaN), el resultado es(+∞,NaN) -
Si
z
es
(NaN,y)(para cualquier y finito), el resultado es(NaN,NaN)y puede generarse FE_INVALID -
Si
z
es
(NaN,+∞), el resultado es(+∞,NaN) -
Si
z
es
(NaN,NaN), el resultado es(NaN,NaN)
Notas
El logaritmo natural de un número complejo z con componentes de coordenadas polares (r,θ) es igual a ln r + i(θ+2nπ) , con el valor principal ln r + iθ .
La semántica de esta función está diseñada para ser consistente con la función C clog .
Ejemplo
#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'; }
Salida posible:
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)
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2597 | C++98 | la especificación maneja incorrectamente las partes imaginarias con signo cero | requisito erróneo eliminado |
Véase también
|
logaritmo común complejo con los cortes de rama a lo largo del eje real negativo
(plantilla de función) |
|
|
exponencial compleja de base
e
(plantilla de función) |
|
|
(C++11)
(C++11)
|
calcula el logaritmo natural (base
e
) (
ln(x)
)
(función) |
|
aplica la función
std::log
a cada elemento del valarray
(plantilla de función) |
|
|
Documentación C
para
clog
|
|