std::pow(std::complex)

来自cppreference.com
< cpp‎ | numeric‎ | complex
定义于头文件 <complex>
template< class T >
complex<T> pow( const complex<T>& x, const complex<T>& y);
template< class T >
complex<T> pow( const complex<T>& x, const T& y);
template< class T >
complex<T> pow( const T& x, const complex<T>& y);
template< class T, class U >
complex</*Promoted*/> pow( const complex<T>& x, const complex<U>& y);
(C++11 起)
template< class T, class U >
complex</*Promoted*/> pow( const complex<T>& x, const U& y);
(C++11 起)
template< class T, class U >
complex</*Promoted*/> pow( const T& x, const complex<U>& y);
(C++11 起)

计算复数 xy 次复数幂,首参数的分支切割沿负实轴。

(C++11 起)为所有算术类型提供额外重载,使得

1. 若任一参数为 long doublestd::complex<long double> ,则转型两个参数为 std::complex<long double>
2. 否则,若任一参数为 doublestd::complex<double> 或整数类型,则转型两个参数为 std::complex<double>
3. 否则,若任一参数为 floatstd::complex<float> ,则转型两个参数为 std::complex<float>

目录

[编辑] 参数

x - 作为底数的复数值
y - 作为指数的复数值

[编辑] 返回值

若不出现错误,则返回复幂 xy

错误和特殊情况按照如同以 std::exp(y*std::log(x)) 实现运算一般处理,

std::pow(0, 0) 的结果是实现定义的。

[编辑] 示例

#include <iostream>
#include <complex>
 
int main()
{
    std::cout << std::fixed;
 
    std::complex<double> z(1, 2);
    std::cout << "(1,2)^2 = " << std::pow(z, 2) << '\n';
 
    std::complex<double> z2(-1, 0);  // -1 的平方根
    std::cout << "-1^0.5 = " << std::pow(z2, 0.5) << '\n';
 
    std::complex<double> z3(-1, -0.0);  // 切割的另一侧
    std::cout << "(-1, -0)^0.5 = " << std::pow(z3, 0.5) << '\n';
 
    std::complex<double> i(0, 1); // 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)

[编辑] 参阅

右半平面范围中的复平方根
(函数模板) [编辑]
求数的给定次幂( xy
(函数) [编辑]
对两个valarrays或valarray和值调用std::pow函数
(函数模板) [编辑]
cpowC 文档