名前空間
変種
操作

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およびそれ以降)

第1引数を負の実軸に沿って分岐切断する、複素数 x の複素数 y 乗を計算します。

すべての算術型に対する追加のオーバーロードが、以下のように提供されます。

1. いずれかの引数が long double または std::complex<long double> であれば、両方の引数が std::complex<long double> にキャストされます
2. そうでなく、いずれかの引数が doublestd::complex<double> または整数型であれば、両方の引数が std::complex<double> にキャストされます
3. そうでなく、いずれかの引数が float または std::complex<float> であれば、両方の引数が std::complex<float> にキャストされます
(C++11およびそれ以降)

目次

[編集] 引数

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);  // square root of -1
    std::cout << "-1^0.5 = " << std::pow(z2, 0.5) << '\n';
 
    std::complex<double> z3(-1, -0.0);  // other side of the cut
    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)

[編集] 関連項目

右半平面の範囲の複素数の平方根
(関数テンプレート) [edit]
xy 乗 (xy) を計算します
(関数) [edit]
2つの valarray または valarray と値に関数 std::pow を適用します
(関数テンプレート) [edit]