Biblioteca C ++ Valarray - função atan2

Descrição

Ele retorna um valarray contendo o valor principal do arco tangente de todos os elementos, na mesma ordem. A tangente para a qual é calculado é o quociente das coordenadas y / x, usando seu sinal para determinar o quadrante apropriado.

Declaração

A seguir está a declaração para a função std :: atan2.

template<class T> valarray<T> atan2 (const valarray<T>& y, const valarray<T>& x);
template<class T> valarray<T> atan2 (const valarray<T>& y, const T& x);
template<class T> valarray<T> atan2 (const T& y, const valarray<T>& x);

C ++ 11

template<class T> valarray<T> atan2 (const valarray<T>& y, const valarray<T>& x);
template<class T> valarray<T> atan2 (const valarray<T>& y, const T& x);
template<class T> valarray<T> atan2 (const T& y, const valarray<T>& x);

Parâmetros

  • x - Contém elementos de um tipo para o qual a função unária abs é definida.

  • y - É um elemento valarray com a (s) coordenada (s) y.

Valor de retorno

Ele retorna um valarray contendo o valor principal do arco tangente de todos os elementos, na mesma ordem. A tangente para a qual é calculado é o quociente das coordenadas y / x, usando seu sinal para determinar o quadrante apropriado.

Exceções

Basic guarantee - se alguma operação executada nos elementos lançar uma exceção.

Corridas de dados

Todos os elementos efetivamente copiados são acessados.

Exemplo

No exemplo abaixo explica sobre a função std :: atan2.

#include <iostream>    
#include <cstddef>     
#include <cmath>       
#include <valarray>    

int main () {
   double y[] = {0.0, 3.0, -2.0};
   double x[] = {-3.0, 3.0, -1.0};
   std::valarray<double> ycoords (y,3);
   std::valarray<double> xcoords (x,3);

   std::valarray<double> results = atan2 (ycoords,xcoords);

   std::cout << "results:";
   for (std::size_t i=0; i<results.size(); ++i)
      std::cout << ' ' << results[i];
   std::cout << '\n';

   return 0;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

results: 3.14159 0.785398 -2.03444