C++ Valarray 库 - atan2 函数


描述

它返回一个 valarray,其中包含按相同顺序排列的所有元素的反正切主值。计算的正切是坐标 y/x 的商,使用它们的符号来确定适当的象限。

宣言

以下是 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);

参数

  • x - 它包含定义了一元函数abs 的类型的元素。

  • y - 它是具有 y 坐标的 valarray 元素。

返回值

它返回一个 valarray,其中包含按相同顺序排列的所有元素的反正切主值。计算的正切是坐标 y/x 的商,使用它们的符号来确定适当的象限。

例外情况

基本保证- 如果对元素执行的任何操作都会引发异常。

数据竞赛

访问所有有效复制的元素。

例子

在下面的示例中解释了 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;
}

让我们编译并运行上面的程序,这将产生以下结果 -

results: 3.14159 0.785398 -2.03444
valarray.htm