std::pow(std::complex)
来自 cppreference.com
定义在头文件 <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> 中 |
||
(A) | ||
template< class T1, class T2 > std::complex</* common-type */> |
(直到 C++23) | |
template< class T1, class T2 > std::complex<std::common_type_t<T1, T2>> |
(自 C++23 起) | |
(B) | ||
template< class T, class NonComplex > std::complex</* common-type */> |
(直到 C++23) | |
template< class T, class NonComplex > std::complex<std::common_type_t<T, NonComplex>> |
(自 C++23 起) | |
(C) | ||
template< class T, class NonComplex > std::complex</* common-type */> |
(直到 C++23) | |
template< class T, class NonComplex > std::complex<std::common_type_t<T, NonComplex>> |
(自 C++23 起) | |
1-4) 计算复数 x 乘以复数次幂 y,第一个参数沿负实轴有一个分支切割。非复数参数被视为具有正零虚部的复数。
(自 C++11 起) |
内容 |
[编辑] 参数
x | - | 底数 |
y | - | 指数 |
[编辑] 返回值
1-4) 如果没有错误发生,则返回复数次幂 xy
。
。
std::pow(0, 0) 的结果是实现定义的。
A-C) 与 (2-4) 相同。
[编辑] 备注
重载 (1) 在 C++98 中提供,以匹配 std::pow 的额外重载 (2)。这些重载在解决 LWG issue 550 时被删除,重载 (1) 在解决 LWG issue 844 时被删除。
附加重载不需要完全按照 (A-C) 的方式提供。它们只需要足以确保对于其第一个参数 base 和第二个参数 exponent
如果 base 和/或 exponent 的类型为 std::complex<T>
|
(直到 C++23) |
如果一个参数的类型为 std::complex<T1>,另一个参数的类型为 如果 std::common_type_t<T1, T2> 未定义,则程序不完整。 |
(自 C++23 起) |
[edit] 示例
运行此代码
#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)
[edit] 另请参见
在右半平面范围内的复数平方根 (函数模板) | |
(C++11)(C++11) |
将一个数字提升到给定幂 (xy) (函数) |
将函数 std::pow 应用于两个 valarrays 或一个 valarray 和一个值 (函数模板) | |
C 文档 for cpow
|