Namespaces
Variants

std::atan(std::valarray)

ja.cppreference.net から
 
 
 
 
ヘッダ <valarray>
template< class T >
valarray<T> atan( const valarray<T>& va );

で定義されています。va の各要素について、その値の逆正接を計算します。

パラメータ

va - 操作を適用する値配列

戻り値

va 内の値の逆正接を含む値配列。

注記

計算を実行するために、非修飾関数(atan)が使用されます。そのような関数が利用できない場合は、std::atanは実引数依存の名前探索により使用されます。

この関数は、std::valarrayとは異なる戻り値の型で実装されることがあります。この場合、置換される型は以下の性質を持ちます:

  • すべてのconstメンバ関数のstd::valarrayが提供されます。
  • std::valarray、std::slice_array、std::gslice_array、std::mask_array、およびstd::indirect_arrayは、置換される型から構築できます。
  • あるconst std::valarray<T>& を引数に取るすべての関数について、ただしbegin()とend()(C++11以降)を除き、置換される型を引数に取る同一の関数が追加されなければなりません;
  • 2つのconst std::valarray<T>&引数を取るすべての関数について、const std::valarray<T>&と置換される型のすべての組み合わせを引数に取る同一の関数が追加されなければなりません。
  • 戻り値の型は、最も深くネストされた引数の型に対して、テンプレートのネストが2レベルを超えて追加されてはなりません。

実装例

template<class T>
valarray<T> atan(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = atan(i);
    return other; // プロキシオブジェクトが返される可能性があります
}

例

#include <algorithm>
#include <cmath>
#include <iostream>
#include <valarray>
auto show = [](char const* title, const std::valarray<float>& va)
{
    std::cout << title << " :";
    std::for_each(std::begin(va), std::end(va), 
        [](const float x) { std::cout << "  " << std::fixed << x; });
    std::cout << '\n';
};
int main()
{
    const std::valarray<float> x = {.1f, .3f, .6f, .9f};
    const std::valarray<float> f = std::atan(x);
    const std::valarray<float> g = std::tan(f);
    show("x          ", x);
    show("f = atan(x)", f);
    show("g = tan(f) ", g);
}

出力:

x           :  0.100000  0.300000  0.600000  0.900000
f = atan(x) :  0.099669  0.291457  0.540420  0.732815
g = tan(f)  :  0.100000  0.300000  0.600000  0.900000

関連項目

valarrayの各要素に関数 std::asin を適用する
(関数テンプレート)
valarrayの各要素に関数 std::acos を適用する
(関数テンプレート)
valarrayと値に関数 std::atan2 を適用する
(関数テンプレート)
valarrayの各要素に関数 std::tan を適用する
(関数テンプレート)
(C++11) (C++11)
逆正接を計算する ( arctan(x) )
(関数)
複素数の逆正接を計算する ( arctan(z) )
(関数テンプレート)