Namespaces
Variants

std::log(std::valarray)

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

Für jedes Element in va wird der natürliche Logarithmus des Werts des Elements berechnet.

Parameter

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

Rückgabewert

Wertearray, das die natürlichen Logarithmen der Werte in va enthält.

Anmerkungen

Es wird die unqualifizierte Funktion (log) verwendet, um die Berechnung durchzuführen. Falls eine solche Funktion nicht verfügbar ist, wird std::log aufgrund von argumentabhängiger Suche verwendet.

Die Funktion kann mit einem Rückgabetyp implementiert werden, der sich von std::valarray unterscheidet. In diesem Fall hat der Ersetzungstyp die folgenden Eigenschaften:

  • Alle constMemberfunktionen von std::valarray werden bereitgestellt.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array und std::indirect_array können aus dem Ersetzungstyp konstruiert werden.
  • Für jede Funktion, die ein const std::valarray<T>& außer begin() und end()(seit C++11) erwartet, müssen identische Funktionen, die die Ersetzungstypen akzeptieren, hinzugefügt werden;
  • Für jede Funktion, die zwei const std::valarray<T>& Argumente erwartet, müssen identische Funktionen für jede Kombination von const std::valarray<T>& und Ersetzungstypen hinzugefügt werden.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Schablonenschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.

Mögliche Implementierung

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

Beispiel

#include <iomanip>
#include <iostream>
#include <valarray>
void show(char const* title, const std::valarray<double>& va)
{
    std::cout << title << " :" << std::right << std::fixed;
    for (double x : va)
        std::cout << std::setw(10) << x;
    std::cout << '\n';
}
int main()
{
    const std::valarray<double> n{0.0, 1.0, 2.0, 3.0};
    const std::valarray<double> exp_n{std::exp(n)};
    const std::valarray<double> log_exp_n{std::log(exp_n)};
    show("n      ", n);
    show("eⁿ     ", exp_n);
    show("log(eⁿ)", log_exp_n);
}

Ausgabe:

n       :  0.000000  1.000000  2.000000  3.000000
eⁿ      :  1.000000  2.718282  7.389056 20.085537
log(eⁿ) :  0.000000  1.000000  2.000000  3.000000

Siehe auch

wendet die Funktion std::log10 auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::exp auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
berechnet den natürlichen Logarithmus (Basis e ) ( ln(x) )
(Funktion)
komplexer natürlicher Logarithmus mit den Verzweigungsschnitten entlang der negativen reellen Achse
(Funktions-Template)