std::sqrt(std::complex) - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
||
Calcula la raíz cuadrada del número complejo z con un punto de ramificación a lo largo del eje real negativo.
Parámetros
| z | - | El número complejo del que tomar la raíz cuadrada. |
Valor de retorno
Si no se producen errores, devuelve la raíz cuadrada de z, en el rango del plano medio derecho, incluyendo el eje imaginario ([0; +∞) a lo largo del eje real y (−∞; +∞) a lo largo del eje imaginario).
Manejo de errores y valores especiales
Los errores se informan de acuerdo con math_errhandling.
Si la implementación es compatible con la aritmética de punto flotante IEEE,
- La función es continua sobre el punto de ramificación teniendo en cuenta el signo de la parte imaginaria.
std::sqrt(std::conj(z)) == std::conj(std::sqrt(z)).- Si
zes(±0,+0), el resultado de(+0,+0). - Si
zes(x,+∞), el resultado de(+∞,+∞)incluso sixes NaN. - Si
zes(x,NaN), el resultado de(NaN,NaN)(a menos que x sea ±∞) y se puede producir FE_INVALID. - Si
zes(-∞,y), el resultado de(+0,+∞)para unayfinita positiva. - Si
zes(+∞,y), el resultado de(+∞,+0)para unayfinita positiva. - Si
zes(-∞,NaN), el resultado de(NaN,∞)(el signo de la parte imaginaria no está especificado). - Si
zes(+∞,NaN), el resultado de(+∞,NaN). - Si
zes(NaN,y), el resultado de(NaN,NaN)y se puede producir FE_INVALID. - Si
zes(NaN,NaN), el resultado de(NaN,NaN).
Notas
La semántica de esta función pretende ser consistente con la función C csqrt.
Ejemplo
#include <iostream> #include <complex> int main() { std::cout << "Raíz cuadrada de -4 es " << std::sqrt(std::complex<double>(-4, 0)) << '\n' << "Raíz cuadrada de (-4,-0), el otro lado de la ramificación, es " << std::sqrt(std::complex<double>(-4, -0.0)) << '\n'; }
Salida:
Raíz cuadrada de -4 es (0,2) Raíz cuadrada de (-4,-0), el otro lado de la ramificación, es (0,-2)
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 2597 | C++98 | La especificación maneja mal las partes imaginarias cero con signo. | Se eliminó el requerimiento erróneo. |