Namespaces
Variants

std::tanh(std::valarray)

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

Für jedes Element in va wird der hyperbolische Tangens des Wertes des Elements berechnet.

Parameter

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

Rückgabewert

Wertearray, das den hyperbolischen Tangens der Werte in va enthält.

Hinweise

Die unqualifizierte Funktion (tanh) wird zur Durchführung der Berechnung verwendet. Wenn eine solche Funktion nicht verfügbar ist, wird std::tanh aufgrund von argumentabhängiger Namenssuche 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 Mitgliedsfunktionen 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 einen const std::valarray<T>& nimmt, außer begin() und end()(seit C++11), müssen identische Funktionen, die die Ersatztypen nehmen, hinzugefügt werden;
  • Für jede Funktion, die zwei const std::valarray<T>& Argumente nimmt, müssen identische Funktionen, die jede Kombination von const std::valarray<T>& und Ersatztypen nehmen, hinzugefügt werden.
  • Der Rückgabetyp fügt nicht mehr als zwei Ebenen der Template-Verschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.

Mögliche Implementierung

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

Beispiel

#include <cmath>
#include <iostream>
#include <valarray>
auto show = [](char const* title, const std::valarray<double>& va)
{
    std::cout << title << " :";
    for (auto x : va)
        std::cout << "  " << std::fixed << x;
    std::cout << '\n';
};
int main()
{
    const std::valarray<double> x = {.0, .1, .2, .3};
    const std::valarray<double> sinh = std::sinh(x);
    const std::valarray<double> cosh = std::cosh(x);
    const std::valarray<double> tanh = std::tanh(x);
    const std::valarray<double> tanh_by_def = sinh / cosh;
    const std::valarray<double> tanh_2x = std::tanh(2.0 * x);
    const std::valarray<double> tanh_2x_by_def = 
        (2.0 * tanh) / (1.0 + std::pow(tanh, 2.0));
    show("x              ", x);
    show("tanh(x)        ", tanh);
    show("tanh(x) (def)  ", tanh_by_def);
    show("tanh(2*x)      ", tanh_2x);
    show("tanh(2*x) (def)", tanh_2x_by_def);
}

Ausgabe:

x               :  0.000000  0.100000  0.200000  0.300000
tanh(x)         :  0.000000  0.099668  0.197375  0.291313
tanh(x) (def)   :  0.000000  0.099668  0.197375  0.291313
tanh(2*x)       :  0.000000  0.197375  0.379949  0.537050
tanh(2*x) (def) :  0.000000  0.197375  0.379949  0.537050

Siehe auch

wendet die Funktion std::sinh auf jedes Element des valarray an
(Funktions-Template)
wendet die Funktion std::cosh auf jedes Element des valarray an
(Funktions-Template)
(C++11) (C++11)
berechnet hyperbolischen Tangens ( tanh(x) )
(Funktion)
berechnet hyperbolischen Tangens einer komplexen Zahl ( tanh(z) )
(Funktions-Template)