Namespaces
Variants

std::log(std::valarray)

De es.cppreference.net
 
 
 
 
Definido en el encabezado <valarray>
template< class T >
valarray<T> log( const valarray<T>& va );

Para cada elemento en va, calcula el logaritmo natural del valor del elemento.

Parámetros

va - array de valores al que aplicar la operación

Valor de retorno

Arreglo de valores que contiene los logaritmos naturales de los valores en va .

Notas

Se utiliza una función no calificada (log) para realizar el cómputo. Si dicha función no está disponible, se utiliza std::log debido a la búsqueda dependiente de argumentos.

La función puede implementarse con un tipo de retorno diferente de std::valarray. En este caso, el tipo de reemplazo tiene las siguientes propiedades:

  • Todas las const funciones miembro de std::valarray están proporcionadas.
  • std::valarray, std::slice_array, std::gslice_array, std::mask_array y std::indirect_array pueden construirse a partir del tipo de reemplazo.
  • Para cada función que toma un const std::valarray<T>& excepto begin() y end()(desde C++11), se añadirán funciones idénticas que tomen los tipos de reemplazo;
  • Para cada función que toma dos const std::valarray<T>& argumentos, se añadirán funciones idénticas que tomen cada combinación de const std::valarray<T>& y tipos de reemplazo.
  • El tipo de retorno no añade más de dos niveles de anidamiento de plantillas sobre el tipo de argumento más profundamente anidado.

Implementación posible

template<class T>
valarray<T> log(const valarray<T>& va)
{
    valarray<T> other = va;
    for (T& i : other)
        i = log(i);
    return other; // se puede devolver un objeto proxy
}

Ejemplo

#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);
}

Salida:

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

Véase también

aplica la función std::log10 a cada elemento del valarray
(plantilla de función)
aplica la función std::exp a cada elemento del valarray
(plantilla de función)
(C++11) (C++11)
calcula el logaritmo natural (base e ) ( ln(x) )
(función)
logaritmo natural complejo con cortes de rama a lo largo del eje real negativo
(plantilla de función)