std::log(std::valarray)(3)
π NAME π
std::log(std::valarray) β literally std::log(std::valarray), bestie. This is the std::log(std::valarray)(3) page from the C++ Standard Libary manual, and weβre keeping all the facts periodt π
β¨
β¨ Synopsis β¨
Okay so hereβs the signature, no cap π«Ά
Defined in header <valarray>
template< class T >
valarray<T> log( const valarray<T>& va );
For each element in va, it computes the natural logarithm of the value of the element. math but make it valarray π
πΈ Parameters πΈ
vaβ value array to apply the operation to π
π Return value π
A value array containing natural logarithms of the values in va. Iconic behavior, honestly π
π§ Notes π§
Unqualified function (log) is used to perform the computation. If such function is not available, std::log is used due to argument-dependent lookup. iykyk β¨
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.
Bestie, those replacement-type rules are giving very specific. Do not skip them π
π Possible implementation π
Hereβs one possible implementation, cute and functional π§
template<class T>
valarray<T> log(const valarray<T>& va)
{
valarray<T> other = va;
for (T& i : other)
i = log(i);
return other; // proxy object may be returned
}
π Example π
// Run this code
#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);
}
β Output: β
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
π See also π
log10(std::valarray)β applies the functionstd::log10to each element ofvalarray(function template)exp(std::valarray)β applies the functionstd::expto each element ofvalarray(function template)log,logf,loglβ computes natural (base e) logarithm (\({\small\ln{x}}\)ln(x)) (function) (C++11) (C++11)log(std::complex)β complex natural logarithm with the branch cuts along the negative real axis (function template)
π Hidden category: π
- Pages with unreviewed LWG DR marker
Signed, sealed, delivered: this is std::log(std::valarray)(3) from cppreference.com, dated 2024.06.10, and Iβm obsessed π
π«Άβ¨
π¦ 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