std:: pow (std::valarray)
|
헤더 파일에 정의됨
<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,
|
(2) | |
|
template
<
class
T
>
std::
valarray
<
T
>
pow
(
const
typename
std::
valarray
<
T
>
::
value_type
&
vbase,
|
(3) | |
값을 거듭제곱합니다.
동작은 다음의 경우 정의되지 않습니다: base. size ( ) ! = exp. size ( ) .
목차 |
매개변수
| base | - | base 값을 포함하는 숫자 배열 |
| exp | - | exponent 값을 포함하는 숫자 배열 |
| vbase | - | base를 정의하는 값 |
| vexp | - | exponent를 정의하는 값 |
반환값
지수 연산 결과를 포함하는 숫자 배열.
참고 사항
정규화되지 않은 함수 ( pow )가 계산 수행에 사용됩니다. 해당 함수를 사용할 수 없는 경우, std:: pow 가 인수 종속 lookup 에 의해 사용됩니다.
이 함수는 반환 타입이 std::valarray 와 다르게 구현될 수 있습니다. 이 경우, 대체 타입은 다음과 같은 속성을 가집니다:
-
- const 멤버 함수 전부가 std::valarray 에 제공됩니다.
- std::valarray , std::slice_array , std::gslice_array , std::mask_array 및 std::indirect_array 을 대체 타입으로부터 생성할 수 있습니다.
- const std:: valarray < T > & 을 받는 모든 함수에 대해 begin() 과 end() 를 제외하고 (C++11부터) , 동일한 함수들이 대체 타입들을 받도록 추가되어야 합니다;
- 두 개의 const std:: valarray < T > & 인수를 받는 모든 함수에 대해, const std:: valarray < T > & 과 대체 타입들의 모든 조합을 받는 동일한 함수들이 추가되어야 합니다.
- 반환 타입은 가장 깊이 중첩된 인수 타입에 대해 두 수준 이상의 템플릿 중첩을 추가하지 않습니다.
예제
#include <cmath> #include <cstddef> #include <iomanip> #include <iostream> #include <valarray> class show { friend std::ostream& operator<<(std::ostream& os, show const& r) { constexpr char const* sup[] { "\u2070", "\u00B9", "\u00B2", "\u00B3", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079" }; for (std::size_t n = 0; n != r.bases.size(); ++n) { os << std::left << r.bases[n] << std::left (설명: HTML 태그와 속성은 그대로 유지되었으며, C++ 관련 용어인 `std::left`는 번역되지 않았습니다. 링크 구조와 클래스 속성이 원본과 동일하게 보존되었습니다.); if (n < r.지수.size()) os << sup[r.지수[n] % 10] << ' '; else os << " "; } if (r.results.size() != 0) { os << '='; for (std::size_t n = 0; n != r.results.size(); ++n) os << ' ' << r.results[n]; } return os << '\n'; } public: std::valarray<int> bases{}, exponents{}, results{}; }; int main() { constexpr int base{2}; constexpr int exponent{5}; const std::valarray<int> bases{1, 2, 3, 4, 5, 6, 7}; const std::valarray<int> exponents{0, 1, 2, 3, 4, 5, 6}; const std::valarray<int> powers1 = std::pow(bases, exponents); const std::valarray<int> powers2 = std::pow(bases, exponent); const std::valarray<int> powers3 = std::pow(base, exponents); std::cout << "pow(const std::valarray<T>& base, const std::valarray<T>& exp); (1)\n" << "base : " << show{bases} << "exp : " << show{exponents} << "pow : " << show{bases, exponents, powers1} << '\n' << "pow(const std::valarray<T>& base, const value_type& vexp); (2)\n" << "base : " << show{bases} << "vexp : " << exponent << '\n' << "pow : " << show{bases, std::valarray<int>(exponent, bases.size()), powers2} << '\n' << "pow(const value_type& vbase, const std::valarray<T>& exp); (3)\n" << "vbase: " << base << '\n' << "exp : " << show{exponents} << "pow : " << show{std::valarray<int>(base, bases.size()), exponents, powers3}; }
출력:
pow(const std::valarray<T>& base, const std::valarray<T>& exp); (1) base : 1 2 3 4 5 6 7 exp : 0 1 2 3 4 5 6 pow : 1⁰ 2¹ 3² 4³ 5⁴ 6⁵ 7⁶ = 1 2 9 64 625 7776 117649 pow(const std::valarray<T>& base, const value_type& vexp); (2) base : 1 2 3 4 5 6 7 vexp : 5 pow : 1⁵ 2⁵ 3⁵ 4⁵ 5⁵ 6⁵ 7⁵ = 1 32 243 1024 3125 7776 16807 pow(const value_type& vbase, const std::valarray<T>& exp); (3) vbase: 2 exp : 0 1 2 3 4 5 6 pow : 2⁰ 2¹ 2² 2³ 2⁴ 2⁵ 2⁶ = 1 2 4 8 16 32 64
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3074 | C++98 |
T
가 스칼라와
valarray
모두에서 추론되어
(2,3)
에 대해 혼합 타입 호출이 허용되지 않음
|
valarray
에서만
T
를 추론
|
참고 항목
|
valarray의 각 요소에 함수
std::sqrt
를 적용합니다
(함수 템플릿) |
|
|
(C++11)
(C++11)
|
주어진 거듭제곱으로 수를 올립니다 (
x
y
)
(함수) |
|
복소수 거듭제곱, 하나 또는 두 인수가 복소수일 수 있음
(함수 템플릿) |