# std::pow(std::valarray)

From cppreference.com
< cpp‎ | numeric‎ | valarray

Defined in header `<valarray>` |  |
template< class T > std::valarray <T> pow( const std::valarray <T>& base, const std::valarray <T>& exp ); | (1) |
template< class T > std::valarray <T> pow( const std::valarray <T>& base, const typename std::valarray <T>::value_type& vexp ); | (2) |
template< class T > std::valarray <T> pow( const typename std::valarray <T>::value_type& vbase, const std::valarray <T>& exp ); | (3) |

Raises a value to a power.

1) Computes the values of each element in the numeric array `base` raised to the power specified by the corresponding element from the numeric array `exp`.

The behavior is undefined if base.size() != exp.size().

2) Computes the values of each element in the numeric array `base` raised to the power `vexp`.
3) Computes the values of `vbase` raised to the power defined by the elements in the numeric array `exp`.

### Parameters

base | - | numeric array containing the values of the base
exp | - | numeric array containing the values of the exponent
vbase | - | a value defining the base
vexp | - | a value defining the exponent

### Return value

A numeric array containing the results of exponentiation.

### Notes

Unqualified function (pow) is used to perform the computation. If such function is not available, std::pow 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 const member functions of std::valarray are provided.
  - std::valarray, std::slice_array, std::gslice_array, std::mask_array and std::indirect_array can be constructed from the replacement type.
  - All functions accepting an argument of type const std::valarray & except `begin()` and `end()` (since C++11) should also accept the replacement type.
  - All functions accepting two arguments of type const std::valarray & should accept every combination of const std::valarray & and the replacement type.
  - The return type does not add more than two levels of template nesting over the most deeply-nested argument type.

### Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR | Applied to | Behavior as published | Correct behavior
--- | --- | --- | ---
LWG 3074 | C++98 | `T` is deduced from both the scalar and the `valarray` for (2-3), disallowing mixed-type calls | only deduce `T` from the `valarray`

### Example

| This section is incomplete Reason: no example

### See also

sqrt(std::valarray) | applies the function std::sqrt to each element of valarray (function template)
powpowfpowl (C++11)(C++11) | raises a number to the given power (xy) (function)
pow(std::complex) | complex power, one or both arguments may be a complex number (function template)

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/valarray/pow&oldid=104266"