Namespaces
Variants

cpowf, cpow, cpowl

From cppreference.net
ヘッダーで定義 <complex.h>
float complex cpowf ( float complex x, float complex y ) ;
(1) (C99以降)
double complex cpow ( double complex x, double complex y ) ;
(2) (C99以降)
long double complex cpowl ( long double complex x, long double complex y ) ;
(3) (C99以降)
ヘッダーで定義 <tgmath.h>
#define pow( x, y )
(4) (C99以降)
1-3) 複素べき乗関数 x y
を計算します。最初の引数に対する分岐切断は負の実軸に沿って設定されます。
4) 型総称マクロ: いずれかの引数が型 long double complex を持つ場合、 cpowl が呼び出される。いずれかの引数が型 double complex を持つ場合、 cpow が呼び出される。いずれかの引数が型 float complex を持つ場合、 cpowf が呼び出される。引数が実数または整数の場合、マクロは対応する実数関数( powf pow powl )を呼び出す。いずれかの引数が虚数の場合、対応する複素数バージョンが呼び出される。

目次

注記: - 「Contents」のみ「目次」に翻訳しました - HTMLタグ、属性、リンク先は一切変更していません - C++関連の用語(Parameters、Return value、Example、References、See also)は原文のまま保持しています - 番号付けと書式は完全に維持されています

パラメータ

x, y - 複素引数

戻り値

エラーが発生しない場合、複素数のべき乗 x y
が返されます。

エラーおよび特殊ケースは、この操作が cexp ( y * clog ( x ) ) によって実装されているかのように扱われます。ただし、実装では特殊ケースをより注意深く扱うことが許可されています。

#include <stdio.h>
#include <complex.h>
int main(void)
{    
    double complex z = cpow(1.0+2.0*I, 2);
    printf("(1+2i)^2 = %.1f%+.1fi\n", creal(z), cimag(z));
    double complex z2 = cpow(-1, 0.5);
    printf("(-1+0i)^0.5 = %.1f%+.1fi\n", creal(z2), cimag(z2));
    double complex z3 = cpow(conj(-1), 0.5); // other side of the cut
    printf("(-1-0i)^0.5 = %.1f%+.1fi\n", creal(z3), cimag(z3));
    double complex z4 = cpow(I, I); // i^i = exp(-pi/2)
    printf("i^i = %f%+fi\n", creal(z4), cimag(z4));
}

出力:

(1+2i)^2 = -3.0+4.0i
(-1+0i)^0.5 = 0.0+1.0i
(-1-0i)^0.5 = 0.0-1.0i
i^i = 0.207880+0.000000i

参考文献

  • C11規格 (ISO/IEC 9899:2011):
  • 7.3.8.2 cpow関数群 (p: 195-196)
  • 7.25 型総称数学 <tgmath.h> (p: 373-375)
  • G.6.4.1 cpow関数群 (p: 544)
  • G.7 型総称数学 <tgmath.h> (p: 545)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.3.8.2 cpow関数群 (p: 177)
  • 7.22 型総称数学 <tgmath.h> (p: 335-337)
  • G.6.4.1 cpow関数群 (p: 479)
  • G.7 型総称数学 <tgmath.h> (p: 480)

関連項目

(C99) (C99) (C99)
複素数の平方根を計算する
(関数)
(C99) (C99)
数値を指定された累乗に計算する ( x y )
(関数)