Namespaces
Variants

std::exp(std::valarray)

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

Para cada elemento en va se calcula e elevado a la potencia igual al valor del elemento.

Parámetros

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

Valor de retorno

Arreglo de valores que contiene e elevado a los valores en va .

Notas

Se utiliza la función no calificada (exp) para realizar el cálculo. Si dicha función no está disponible, se utiliza std::exp 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:

  • Se proporcionan todas las const funciones miembro de std::valarray.
  • 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 tome un const std::valarray<T>& excepto begin() y end()(desde C++11), se agregarán funciones idénticas que tomen los tipos de reemplazo;
  • Para cada función que tome dos argumentos const std::valarray<T>&, se agregarán funciones idénticas que tomen cualquier combinación de const std::valarray<T>& y tipos de reemplazo.
  • El tipo de retorno no agrega más de dos niveles de anidamiento de plantilla sobre el tipo de argumento más profundamente anidado.

Implementación posible

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

Ejemplo

Este ejemplo demuestra la identidad de Euler e iπ
= -1
y los exponentes relacionados.

#include <complex>
#include <iostream>
#include <numbers>
#include <valarray>
int main()
{
    const double pi = std::numbers::pi;
    std::valarray<std::complex<double>> v =
    {
        {0, 0}, {0, pi / 2}, {0, pi}, {0, 3 * pi / 2}, {0, 2 * pi}
    };
    std::valarray<std::complex<double>> v2 = std::exp(v);
    for (std::cout << std::showpos << std::fixed; auto n : v2)
        std::cout << n << '\n';
}

Salida:

(+1.000000,+0.000000)
(+0.000000,+1.000000)
(-1.000000,+0.000000)
(-0.000000,-1.000000)
(+1.000000,-0.000000)

Véase también

aplica la función std::log a cada elemento del valarray
(plantilla de función)
(C++11) (C++11)
devuelve e elevado a la potencia dada ( e x )
(función)
exponencial compleja de base e
(plantilla de función)