complex.h复数及其运算

2018-12-12  本文已影响0人  a_ycy789

https://www.cnblogs.com/wuyudong/p/c99-new-feature.html

1.复数(complex)

complex.h是C标准函数库中的头文件,提供了复数算术所需要的宏定义与函数声明。

#definecomplex  _Complex#define_Complex_I  ((const float _Complex)__I__)#defineI  _Complex_I

C99规定了关键字_Complex。因而有3种复数类型:

double _Complex

float _Complex

long double _Complex

次序不是必须遵守的,比如float _Complex也可以写成_Complex float。_Complex_I扩展为类型为const float _Complex的常量值,其值为虚数单位。C99规定complex作为宏扩展为_Complex。但C++未定义complex宏。gcc仅支持complex type,不支持imaginary type。因此宏I扩展为_Complex_I。

<complex.h>里面还包含了不少支持复数的数学函数(c打头的就是):

1、ccos,csin,ctan,cacos,casin,catan:复数域内的三角函数,有对应的f和l版本。

2、ccosh,csinh,ctanh,cacosh,casinh,catanh:复数域内的双曲函数,有对应的f和l版本。

3、cexp,clog,cabs,cpow,csqrt:复数域内的指数、对数、绝对值、幂函数,有对应的f和l版本。

4、carg,cimag,creal,conj,cproj:获取象限角、虚数部分、实数部分、a=x及b=-y、Riemann球上的投影,有对应的f和l版本。

代码:

#include#includeint main() 

{

    doublecomplex cmp =1.3+2.3*I;

    printf("%f + %fi\n", creal(cmp), cimag(cmp));

    return0; 

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

1、_Complex是一种新增的数据类型,用来表示复数。C99

新增了复数类型(_Complex)和虚数类型(_Imaginary)。简单来说,C99 提供了三种复数类型:

float _Complex,double _Complex,和 long double _Complex。

对于float _Complex类型的变量来说,它包含两个 float类型的值,一个用于表示复数的实部(real part),

另一个用于表示虚部(imaginary part)。类似地,double _Complex 包含两个 double类型的值。

C99也提供了三种虚数类型:float _Imaginary,double _Imaginary,以及 long double_Imaginary。

虚数类型只有虚部,没有实部。

2、包含标准头文件 complex.h 后,就可以用 complex来代表 _Complex,用imaginary来代表 _Imaginary,以及用 I来代表虚数单位 i,也就是 -1的平方根。例如:

#include <complex.h>

double _Complex x = 5.2;

double complex y = 5.0 * I;

double complex z = 5.2 – 5.0 * I;

3、

注意:_Complex类型对于独立式环境(freestanding

environment)来说是可选的。可选的意思是,不强制必须支持这种类型。而所谓独立式环境,是指 C

程序可以在没有操作系统的情况下运行。_Imaginary类型在任何环境下都是可选的。目前的编译器对这两种类型的支持都不太好。

上一篇 下一篇

猜你喜欢

热点阅读