Namespaces
Variants

std::log10(std::valarray)

出典: ja.cppreference.net
 
 
 
 
ヘッダ <valarray>
template< class T >
valarray<T> log10( const valarray<T>& va );

で定義されています。vaの各要素に対して、その要素の値の常用対数 (10 を底とする対数) を計算します。

パラメータ

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

戻り値

va 内の値の常用対数を含む値配列。

注記

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

この関数は、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> log10(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = log10(i);
    return other; // プロキシオブジェクトが返される可能性あり
}

例

#include <cmath>
#include <iomanip>
#include <iostream>
#include <valarray>
void show(char const* title, const std::valarray<float>& va)
{
    std::cout << title << " : " << std::right;
    for (float x : va)
        std::cout << std::setw(6) << x;
    std::cout << '\n';
}
int main()
{
    const std::valarray<float> n{-2.f, -1.f, 0.f, 1.f, 2.f, 3.f, INFINITY};
    const std::valarray<float> pow10{std::pow(10.f, n)};
    const std::valarray<float> log10_pow10{std::log10(pow10)};
    show("n      ", n);
    show("10ⁿ    ", pow10);
    show("lg(10ⁿ)", log10_pow10);
}

出力:

n       :     -2    -1     0     1     2     3   inf
10ⁿ     :   0.01   0.1     1    10   100  1000   inf
lg(10ⁿ) :     -2    -1     0     1     2     3   inf

関連項目

valarrayの各要素に関数 std::log を適用する
(関数テンプレート)
(C++11) (C++11)
常用(底 10 )対数を計算する ( log 10 (x) )
(関数)
負の実軸に沿って分岐切断を持つ複素数の常用対数
(関数テンプレート)