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 vonconst 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
Diesen Code ausführen
#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) |