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

cprojf函数


概要:
#include <complex.h>
float complex cprojf(float complex z);

描述:

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

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

INFINITY + I*copysignf(0.0f, cimagf(z))


参数:
float complex z

参数为一个float 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 
/*函数cprojf范例*/

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

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

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

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

    printf("cprojf(1.0f+1.0fi)=%.1f%+.1fi\n", crealf(a), cimagf(a));
    printf("cprojf(INFINITY + INFINITY*I)=%.1f%+.1fi\n", crealf(b), cimagf(b));
    printf("cprojf(-INFINITY - INFINITY*I)=%.1f%+.1fi\n", crealf(c), cimagf(c));

    return 0;
}

输出:

cprojf(1.0f+1.0fi)=1.0+1.0i

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

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


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