◐ Shell
clean mode source ↗

std::atan2, std::atan2f, std::atan2l - cppreference.com

De cppreference.com

</tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody>

Definido en el archivo de encabezado <cmath>

(1)

float atan2 ( float y, float x );

float atan2f( float y, float x );

(desde C++11)

double atan2 ( double y, double x );

(2)
(3)

long double atan2 ( long double y, long double x );

long double atan2l( long double y, long double x );

(desde C++11)

Promovido atan2 ( Aritmético1 y, Aritmético2 x );

(4) (desde C++11)

1-3) Calcula el arco tangente de y/x usando los signos de los argumentos para determinar el cuadrante correcto.

4) Un conjunto de sobrecargas o una plantilla de función para todas las combinaciones de los argumentos de tipo aritmético no cubiertas por (1-3). Si algún argumento tiene tipo entero, se convierte a double. Si cualquier argumento es long double, entonces el tipo de retorno Promovido también es long double, de lo contrario el tipo de retorno siempre es double.

Parámetros

Valor de retorno

Si no se producen errores, se devuelve el arco tangente de y/x (

arctan()

) en el rango [-π , +π] radianes.

Argumento y

Valor de retorno

Argumento x

Si se produce un error de dominio, se devuelve un valor definido por la implementación (NaN donde se dé apoyo).

Si se produce un error debido a subdesbordamiento, se devuelve el resultado correcto (después del redondeo).

Manejo de errores

Los errores se informan como se especifica en math_errhandling.

Se puede producir un error de dominio si x e y son cero.

Si la implementación admite la aritmética de punto flotante IEEE (IEC 60559):

  • Si x e y son cero, no se produce un error de dominio.
  • Si x e y son cero, tampoco se produce un error de rango.
  • Si y es cero, no se produce un error de polo.
  • Si y es ±0 y x es negativo o -0, se devuelve ±π.
  • Si y es ±0 y x es positivo o +0, se devuelve ±0.
  • Si y es ±∞ y x es finito, se devuelve ±π/2.
  • Si y es ±∞ y x es -∞, se devuelve ±3π/4.
  • Si y es ±∞ y x es +∞, se devuelve ±π/4.
  • Si x es ±0 y y es negativo, se devuelve -π/2.
  • Si x es ±0 y y es positive, se devuelve +π/2.
  • Si x es -∞ y y es finito y positivo, se devuelve .
  • Si x es -∞ y y es finito y negativo, se devuelve .
  • Si x es +∞ y y es finito y positivo, se devuelve +0.
  • Si x es +∞ y y es finito y negativo, se devuelve -0.
  • Si x es NaN o y es NaN, se devuelve NaN.

Notas

std::atan2(y, x) es equivalente a std::arg(std::complex<double>(x,y)).

POSIX especifica que en caso de subdesbordamiento, se devuelva y/x, y si no se admite, se devuelva un valor definido por la implementación no mayor que DBL_MIN, FLT_MIN y LDBL_MIN.

Ejemplo

#include <iostream>
#include <cmath>

int main()
{
    // uso normal: los signos de los dos argumentos determinan el cuadrante
    std::cout << "(x:+1,y:+1) cartesiano es (r:" << hypot(1,1)
              << ",phi:" << atan2(1,1) << ") polar\n"  // atan2(1,1) = +pi/4, Cuad I
              << "(x:-1,y:+1) cartesiano es (r:" << hypot(1,-1)
              << ",phi:" << atan2(1,-1) << ") polar\n" // atan2(1, -1) = +3pi/4, Cuad II
              << "(x:-1,y:-1) cartesiano es (r:" << hypot(-1,-1)
              << ",phi:" << atan2(-1,-1) << ") polar\n" // atan2(-1,-1) = -3pi/4, Cuad III
              << "(x:+1,y:-1) cartesiano es (r:" << hypot(-1,1)
              << ",phi:" << atan2(-1,1) << ") polar\n"; // atan2(-1, 1) = -pi/4, Cuad IV
    // valores especiales
    std::cout << "atan2(0, 0) = " << atan2(0,0)
              << " atan2(0,-0) = " << atan2(0,-0.0) << '\n'
              << "atan2(7, 0) = " << atan2(7,0)
              << " atan2(7,-0) = " << atan2(7,-0.0) << '\n';
}

Salida:

(x:+1,y:+1) cartesiano es (r:1.41421,phi:0.785398) polar
(x:-1,y:+1) cartesiano es (r:1.41421,phi:2.35619) polar
(x:-1,y:-1) cartesiano es (r:1.41421,phi:-2.35619) polar
(x:+1,y:-1) cartesiano es (r:1.41421,phi:-0.785398) polar
atan2(0, 0) = 0 atan2(0,-0) = 3.14159
atan2(7, 0) = 1.5708 atan2(7,-0) = 1.5708

Véase también

(C++11)(C++11)

Calcula el arco seno (arcsen(x))
(función) [editar]

(C++11)(C++11)

Calcula el arco coseno (arccos(x))
(función) [editar]

(C++11)(C++11)

Calcula el arco tangente (arctan(x))
(función) [editar]
Devuelve el ángulo de fase.
(plantilla de función) [editar]

se aplica la función std::atan2 a un valarray y un valor

Original:

applies the function std::atan2 to a valarray and a value

The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.


(plantilla de función) [editar]