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