Namespaces
Variants

std:: sqrt (std::complex)

From es.cppreference.net
Definido en el encabezado <complex>
template < class T >
std:: complex < T > sqrt ( const std:: complex < T > & z ) ;

Calcula la raíz cuadrada del número complejo z con un corte de rama a lo largo del eje real negativo.

Contenidos

Parámetros

z - número complejo del cual se toma la raíz cuadrada

Valor de retorno

Si no ocurren errores, devuelve la raíz cuadrada de z , en el rango del semiplano 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 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:: sqrt ( std:: conj ( z ) ) == std:: conj ( std:: sqrt ( z ) )
  • Si z es (±0,+0) , el resultado es (+0,+0)
  • Si z es (x,+∞) , el resultado es (+∞,+∞) incluso si x es NaN
  • Si z es (x,NaN) , el resultado es (NaN,NaN) (a menos que x sea ±∞) y FE_INVALID puede ser generada
  • Si z es (-∞,y) , el resultado es (+0,+∞) para y finito positivo
  • Si z es (+∞,y) , el resultado es (+∞,+0) para y finito positivo
  • Si z es (-∞,NaN) , el resultado es (NaN,∞) (signo de la parte imaginaria no especificado)
  • Si z es (+∞,NaN) , el resultado es (+∞,NaN)
  • Si z es (NaN,y) , el resultado es (NaN,NaN) y FE_INVALID puede ser generada
  • Si z es (NaN,NaN) , el resultado es (NaN,NaN)

Notas

La semántica de esta función está diseñada para ser consistente con la función C csqrt .

Ejemplo

#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";
}

Salida:

Square root of -4 is (0,2)
Square root of (-4,-0) is (0,-2) (the other side of the cut)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

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

potencia compleja, uno o ambos argumentos pueden ser un número complejo
(plantilla de función)
(C++11) (C++11)
calcula la raíz cuadrada ( √ x )
(función)
aplica la función std::sqrt a cada elemento del valarray
(plantilla de función)