std::tanh(std::valarray)(3)
πΈ std::tanh(std::valarray)(3) πΈ
okay so bestie, this is the std::tanh(std::valarray)(3) page from the C++ Standard Libary manual β yes, βLibaryβ is literally how the manual name shows up, and weβre keeping it because facts donβt change, only vibes do π
. This whole page is about applying hyperbolic tangent to every element of a valarray, and itβs giving very βmath but make it containerizedβ energy β¨
β¨ NAME β¨
std::tanh(std::valarray) β std::tanh(std::valarray), thatβs the whole name section, bestie. Itβs the std::tanh overload for std::valarray, and it is exactly what it says on the tin π«Ά
π Synopsis π
Defined in header <valarray>:
template< class T >
valarray<T> tanh( const valarray<T>& va );
For each element in va, this computes the hyperbolic tangent of the value of the element. literally element-by-element glow-up π
π«Ά Parameters π«Ά
vaβ value array to apply the operation to. thatβs the input array, bestie; itβs aconst valarray<T>&.
π Return value π
Value array containing hyperbolic tangent of the values in va. so you get a whole value-array vibe back, full of tanhβd values β¨
π Notes π
Unqualified function (tanh) is used to perform the computation. If such function is not available, std::tanh is used due to argument-dependent lookup.
The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:
- All
constmember functions ofstd::valarrayare provided. std::valarray,std::slice_array,std::gslice_array,std::mask_arrayandstd::indirect_arraycan be constructed from the replacement type.- For every function taking a
const std::valarray<T>&exceptbegin()andend()(since C++11), identical functions taking the replacement types shall be added; - For every function taking two
const std::valarray<T>&arguments, identical functions taking every combination ofconst std::valarray<T>&and replacement types shall be added. - The return type does not add more than two levels of template nesting over the most deeply-nested argument type.
π§ Possible implementation π§
hereβs one way it could look under the hood, no cap:
template<class T>
valarray<T> tanh(const valarray<T>& va)
{
valarray<T> other = va;
for (T& i : other)
i = tanh(i);
return other; // proxy object may be returned
}
π₯ Example π₯
// Run this code
#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);
}
β¨ Output β¨
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
π¦ See also π¦
sinh(std::valarray)β applies the functionstd::sinhto each element ofvalarray(function template)cosh(std::valarray)β applies the functionstd::coshto each element ofvalarray(function template)tanh,tanhf,tanhlβ computes hyperbolic tangent(\({\small\tanh{x}}\)tanh(x))(function) (C++11) (C++11)tanh(std::complex)β computes hyperbolic tangent of a complex number(\({\small\tanh{z}}\)tanh(z))(function template)
π Hidden category π
- Pages with unreviewed LWG DR marker
okay thatβs the whole page, bestie. it came from http://cppreference.com, version/date 2024.06.10, and the page name is std::tanh(std::valarray)(3). mwah π stay hyperbolic β¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms