Namespaces
Variants

std::log10(std::valarray)

Von de.cppreference.net
 
 
 
 
Definiert in Header <valarray>
template< class T >
valarray<T> log10( const valarray<T>& va );

Für jedes Element in va wird der gewöhnliche Logarithmus (Basis 10) des Werts des Elements berechnet.

Parameter

va - Wert-Array, auf das die Operation angewendet werden soll

Rückgabewert

Wertearray, das die dekadischen Logarithmen der Werte in va enthält.

Anmerkungen

Ein unqualifizierter Funktionsaufruf (log10) wird verwendet, um die Berechnung durchzuführen. Ist eine solche Funktion nicht verfügbar, wird std::log10 aufgrund der argumentabhängigen Suche verwendet.

Die Funktion kann mit einem von std::valarray abweichenden Rückgabetyp implementiert werden. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften:

  • Alle const-Elementfunktionen von std::valarray werden bereitgestellt.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array und std::indirect_array können aus dem Ersatztyp konstruiert werden.
  • Für jede Funktion, die ein const std::valarray<T>& mit Ausnahme von begin() und end() (seit C++11) entgegennimmt, werden identische Funktionen hinzugefügt, die die Ersatztypen entgegennehmen;
  • Für jede Funktion, die zwei const std::valarray<T>&-Argumente entgegennimmt, werden identische Funktionen hinzugefügt, die jede Kombination aus const std::valarray<T>& und Ersatztypen entgegennehmen.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Templateschachtelung über dem am tiefsten geschachtelten Argumenttyp hinzu.

Mögliche Implementierung

template<class T>
valarray<T> log10(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = log10(i);
    return other; // Proxy-Objekt kann zurückgegeben werden
}

Beispiel

#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);
}

Ausgabe:

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

Siehe auch

wendet die Funktion std::log auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
berechnet den dekadischen Logarithmus (Basis 10 ) ( log 10 (x) )
(Funktion)
komplexer dekadischer Logarithmus mit den Verzweigungsschnitten entlang der negativen reellen Achse
(Funktions-Template)