CppDS.com

C++ 98 11 14 17 20 手册

cpowf, cpow, cpowl

来自cppreference.com
< c‎ | numeric‎ | complex
 
 
 
复数算术
类型与虚数常量
(C99)
(C11)
(C99)
操作
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
幂与指数函数
(C99)
(C99)
cpow
(C99)
(C99)
三角函数
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
双曲函数
(C99)
(C99)
(C99)
(C99)
(C99)
(C99)
 
定义于头文件 <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) 计算复幂函数 xy
,首参数的分支切割沿负实轴。
4) 泛型宏。若任何参数拥有 long double complex 类型,则调用 cpowl 。若任何参数拥有 double complex 类型,则调用 cpow ,若任何参数拥有 float complex 类型,则调用 cpowf 。若参数为实数或整数,则宏调用对应的实函数( powfpowpowl ) 。若参数为虚数,则调用对应的复数版本。

参数

x, y - 复参数

返回值

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

错误和特殊情况按照如同以 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); // 切割的另一侧
    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 standard (ISO/IEC 9899:2011):
  • 7.3.8.2 The cpow functions (p: 195-196)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • G.6.4.1 The cpow functions (p: 544)
  • G.7 Type-generic math <tgmath.h> (p: 545)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.3.8.2 The cpow functions (p: 177)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • G.6.4.1 The cpow functions (p: 479)
  • G.7 Type-generic math <tgmath.h> (p: 480)

参阅

(C99)(C99)(C99)
计算复数平方根
(函数)
(C99)(C99)
计算一个数的给定次幂( xy
(函数)
关闭