C++ Valarray::atan2 Function



The C++ Valarray::atan2() function calculates the inverse tangent of the (y/x) value of each element in the valarray and returns a valarray containing the inverse tangent of all the items. where y is the proportion of the y-coordinate and x is the proportion of the x-coordinate.

The atan2() function of cmath is overload with in this function, which calls it once for each element. It uses the sings of the arguments to determine the appropriate quadrant.

  • If both the y,x are of same valarray size,the function computes the inverse of the each pair of corresponding values from y and x.
  • If y is valarray and x is value, the function computes the inverse tangent of each element of y paired with x.
  • If x is valarray and y is value, the function computes the inverse tangent of y paired with each element of x.

Syntax

Following is the syntax for C++ Valarray::atan2 Function −

 atan2 (const valarray<T>& y, const valarray<T>& x); atan2 (const valarray<T>& y, const T& x); 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).

Examples

Example 1

Let's look into the following example, where we are going to use atan2() function and retrieving the output.

 #include <iostream> #include <valarray> using namespace std; int main() { double y[] = { 0.4, 1.2, -1.0 }; double x[] = { 0.5, 1.3, -1.0 }; valarray<double> ycoords(y, 2); valarray<double> xcoords(x, 2); valarray<double> result = atan2(ycoords, xcoords); cout << "Result:"; for (size_t i = 0; i < result.size(); ++i) cout << ' ' << result[i]; cout << '\n'; return 0; } 

Output

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

 Result: 0.674741 0.745419 

Example 2

Considering the another scenario, where we are going to use the atan2() function and retrieving the output.

 #include <iostream> #include <valarray> using namespace std; int main (){ valarray<double> y = {4, 10, 9}; valarray<double> x = {12, 22, 14}; valarray<double> result1 = atan2(y, x); cout<<"\natan2(y, x) returns: "; for(int i = 0; i < result1.size(); i++) cout<<result1[i]<<" "; return 0; } 

Output

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

 atan2(y, x) Return: 0.321751 0.426627 0.571337 

Example 3

In the following example, we are going to use atan2() function and retrieving the output in radians.

 #include <iostream> #include <cmath> #define PI 3.141592654 using namespace std; int main() { double result; int x = -12; float y = 31.6; result = atan2(y, x); cout << "atan2(y/x) = " << result << " radians" << endl; return 0; } 

Output

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

 atan2(y/x) = 1.93372 radians 

Example 4

Following is the example, where we are going to use atan2() function and retrieving the output in degrees.

 #include <iostream> #include <cmath> #define PI 3.141592654 using namespace std; int main() { double result; int x = -12; float y = 31.6; result = atan2(y, x); cout << "atan2(y/x) = " << result * (180 / PI) << " degrees"; return 0; } 

Output

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

 atan2(y/x) = 110.794 degrees 
Advertisements