std::pow(std::complex)
Определено в заголовочном файле <complex> | ||
|---|---|---|
template< class T > std::complex<T> pow( const std::complex<T>& x, int y ); | (1) | (до C++11) |
template< class T > std::complex<T> pow( const std::complex<T>& x, const std::complex<T>& y ); | (2) | |
template< class T > std::complex<T> pow( const std::complex<T>& x, const T& y ); | (3) | |
template< class T > std::complex<T> pow( const T& x, const std::complex<T>& y ); | (4) | |
| Дополнительные перегрузки (начиная с C++11) | ||
Определено в заголовочном файле <complex> | ||
template< class T1, class T2 >
std::complex</* common-type */>
pow( const std::complex<T1>& x, const std::complex<T2>& y );
| (A) | (до C++23) |
template< class T1, class T2 >
std::complex<std::common_type_t<T1, T2>>
pow( const std::complex<T1>& x, const std::complex<T2>& y );
| (начиная с C++23) | |
template< class T, class NonComplex >
std::complex</* common-type */>
pow( const std::complex<T>& x, const NonComplex& y );
| (B) | (до C++23) |
template< class T, class NonComplex >
std::complex<std::common_type_t<T, NonComplex>>
pow( const std::complex<T>& x, const NonComplex& y );
| (начиная с C++23) | |
template< class T, class NonComplex >
std::complex</* common-type */>
pow( const NonComplex& x, const std::complex<T>& y );
| (C) | (до C++23) |
template< class T, class NonComplex >
std::complex<std::common_type_t<T, NonComplex>>
pow( const NonComplex& x, const std::complex<T>& y );
| (начиная с C++23) |
x в степени комплексного числа y с разрезом ветвления вдоль отрицательной вещественной оси для первого аргумента. Аргументы, не являющиеся комплексными числами, рассматриваются как комплексные числа с положительной нулевой мнимой частью. A-C) Предоставляются дополнительные перегрузки. NonComplex не является специализацией std::complex. | (начиная с C++11) |
Параметры
| x | - | основание |
| y | - | показатель степени |
Возвращаемое значение
std::exp(y * std::log(x)).std::pow(0, 0) определяется реализацией.Примечания
Перегрузка (1) была предоставлена в C++98 для соответствия дополнительным перегрузкам (2) из std::pow. Эти перегрузки были удалены в результате принятия решения по вопросу LWG 550, а перегрузка (1) была удалена в результате принятия решения по вопросу LWG 844.
Дополнительные перегрузки не обязательно должны быть предоставлены точно в виде (A-C). Достаточно, чтобы они обеспечивали для первого аргумента base и второго аргумента exponent следующее:
| Если
| (до C++23) |
| Если один аргумент имеет тип std::complex<T1>, а другой аргумент имеет тип Если std::common_type_t<T1,T2> некорректно сформирован, программа некорректна. | (начиная с C++23) |
Пример
#include <complex>
#include <iostream>
int main()
{
std::cout << std::fixed;
std::complex<double> z(1.0, 2.0);
std::cout << "(1,2)^2 = " << std::pow(z, 2) << '\n';
std::complex<double> z2(-1.0, 0.0); // square root of -1
std::cout << "-1^0.5 = " << std::pow(z2, 0.5) << '\n';
std::complex<double> z3(-1.0, -0.0); // other side of the cut
std::cout << "(-1,-0)^0.5 = " << std::pow(z3, 0.5) << '\n';
std::complex<double> i(0.0, 1.0); // i^i = exp(-pi / 2)
std::cout << "i^i = " << std::pow(i, i) << '\n';
}
Вывод:
(1,2)^2 = (-3.000000,4.000000) -1^0.5 = (0.000000,1.000000) (-1,-0)^0.5 = (0.000000,-1.000000) i^i = (0.207880,0.000000)
См. также
| квадратный корень комплексного числа в правой полуплоскости (шаблон функции) |
|
|
(C++11)(C++11) | возводит число в заданную степень (\(\small{x^y}\)xy) (функция) |
применяет функцию std::pow к двум valarray или к valarray и значению (шаблон функции) |
|
Документация по C для cpow |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/complex/pow