Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::atan2(std::valarray)

      From cppreference.com
      <cpp‎ |numeric‎ |valarray
       
       
       
      std::valarray
      Member functions
      Non-member functions
      Helper classes
      Deduction guides(C++17)
       
      Defined in header<valarray>
      template<class T>
      std::valarray<T> atan2(conststd::valarray<T>& y,conststd::valarray<T>& x);
      (1)
      template<class T>

      std::valarray<T> atan2(conststd::valarray<T>& y,

                             consttypenamestd::valarray<T>::value_type& vx);
      (2)
      template<class T>

      std::valarray<T> atan2(consttypenamestd::valarray<T>::value_type& vy,

                             conststd::valarray<T>& x);
      (3)

      Computes the inverse tangent ofy/ x using the signs of arguments to correctly determine quadrant.

      1) Computes the inverse tangent of each pair of corresponding values fromy andx.

      The behavior is undefined ifx.size()!= y.size().

      2) Computes the inverse tangent ofvx and each value in the numeric arrayy.
      3) Computes the inverse tangent ofvy and each value in the numeric arrayx.

      Contents

      [edit]Parameters

      x, y - numeric arrays to compute inverse tangent of
      vy, vx - values to compute inverse tangent of

      [edit]Return value

      A numeric array containing the results of computation of inverse tangent.

      [edit]Notes

      Unqualified function (atan2) is used to perform the computation. If such function is not available,std::atan2 is used due toargument-dependent lookup.

      The function can be implemented with the return type different fromstd::valarray. In this case, the replacement type has the following properties:

      [edit]Example

      Run this code
      #include <algorithm>#include <cmath>#include <iomanip>#include <iostream>#include <valarray> void show(charconst* title,conststd::valarray<double>& va){std::cout<< title<<' ';std::for_each(std::begin(va),std::end(va),[](constdouble x){std::cout<<' '<<std::right<<std::setw(4)<< x<<"°";});std::cout<<'\n';} constdouble pi=std::acos(-1.0);// C++20: std::numbers::pi int main(){auto degrees_to_radians=[](doubleconst& x){return(pi* x/180);};auto radians_to_degrees=[](doubleconst& x){return(180* x/ pi);}; conststd::valarray<double> degrees{-90,-60,-45,-30,0,30,45,60,90};conststd::valarray<double> radians= degrees.apply(degrees_to_radians); constauto sin=std::sin(radians);constauto cos=std::cos(radians);     show("(1)",std::atan2(sin, cos).apply(radians_to_degrees));    show("(2)",std::atan2(sin/cos,1.0).apply(radians_to_degrees));    show("(3)",std::atan2(1.0, cos/sin).apply(radians_to_degrees));}

      Output:

      (1)   -90°  -60°  -45°  -30°    0°   30°   45°   60°   90°(2)   -90°  -60°  -45°  -30°    0°   30°   45°   60°   90°(3)    90°  120°  135°  150°    0°   30°   45°   60°   90°

      [edit] Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 3074C++98T is deduced from both the scalar and thevalarray for(2,3), disallowing mixed-type callsonly deduceT from thevalarray

      [edit]See also

      applies the functionstd::asin to each element of valarray
      (function template)[edit]
      applies the functionstd::acos to each element of valarray
      (function template)[edit]
      applies the functionstd::atan to each element of valarray
      (function template)[edit]
      (C++11)(C++11)
      arc tangent, using signs to determine quadrants
      (function)[edit]
      returns the phase angle
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/valarray/atan2&oldid=160850"

      [8]ページ先頭

      ©2009-2025 Movatter.jp