当前位置: C语言 -- 标准库 -- <complex.h> -- cproj

cproj函数


概要:
#include <complex.h>
double complex cproj(double complex z);

描述:

该函数计算参数zRiemann球面上的投影:z投影到z;但如果z是复数无穷大(即使一部分是无穷大,另一部分是非数字。),将在实轴上投影到正无穷大。

如果参数z存在无穷大部分,cproj(z)等价于:

INFINITY + I*copysign(0.0, cimag(z))


参数:
double complex z

参数为一个double complex类型的复数。


返回值:

函数返回参数zRiemann球面上的投影值。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
/*函数cproj范例*/

#ifdef __STDC_NO_COMPLEX__
#error "Implementation does not support complex types."
#endif

#include <complex.h>
#include <math.h>
#include <stdio.h>

int main(void)
{
    double complex x = 1.0+1.0i;
    double complex y = INFINITY + INFINITY*I;
    double complex z = -INFINITY - INFINITY*I;
    double complex a, b, c;

    a = cproj(x);
    b = cproj(y);
    c = cproj(z);

    printf("cproj(1.0+1.0i)=%.1f%+.1fi\n", creal(a), cimag(a));
    printf("cproj(INFINITY + INFINITY*I)=%.1f%+.1fi\n", creal(b), cimag(b));
    printf("cproj(-INFINITY - INFINITY*I)=%.1f%+.1fi\n", creal(c), cimag(c));

    return 0;
}

输出:

cproj(1.0+1.0i)=1.0+1.0i

cproj(INFINITY + INFINITY*I)=inf+0.0i

cproj(-INFINITY - INFINITY*I)=inf-0.0i


相关内容:
cprojf 计算float complex类型复数在Riemann球面上投影值的函数。
cprojl 计算long double complex类型复数在Riemann球面上投影值的函数。