# C++ Valarray Library - atan2 Function

#### Complete Python Prime Pack for 2023

9 Courses     2 eBooks

#### Artificial Intelligence & Machine Learning Prime Pack

6 Courses     1 eBooks

#### Java Prime Pack 2023

8 Courses     2 eBooks

## Description

It returns a valarray containing the principal value of the arc tangent of all the elements, in the same order. The tangent for which it is calculated is the quotient of coordinates y/x, using their sign to determine the appropriate quadrant.

## Declaration

Following is the declaration for std::atan2 function.

```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);
```

## Parameters

• x − It is containing elements of a type for which the unary function abs is defined.

• y − It is a valarray element with the y coordinate(s).

## Return Value

It returns a valarray containing the principal value of the arc tangent of all the elements, in the same order. The tangent for which it is calculated is the quotient of coordinates y/x, using their sign to determine the appropriate quadrant.

## Exceptions

Basic guarantee − if any operation performed on the elements throws an exception.

## Data races

All elements effectively copied are accessed.

## Example

In below example explains about std::atan2 function.

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

Let us compile and run the above program, this will produce the following result −

```results: 3.14159 0.785398 -2.03444
```
valarray.htm