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

cprojl函数


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

描述:

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

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

INFINITY + I*copysignl(0.0L, cimagl(z))


参数:
long double complex z

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

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

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

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

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

    printf("cprojl(1.0L+1.0Li)=%.1Lf%+.1Lfi\n", creall(a), cimagl(a));
    printf("cprojl(INFINITY + INFINITY*I)=%.1Lf%+.1Lfi\n", creall(b), cimagl(b));
    printf("cprojl(-INFINITY - INFINITY*I)=%.1Lf%+.1Lfi\n", creall(c), cimagl(c));

    return 0;
}

输出:

cprojl(1.0L+1.0Li)=1.0+1.0i

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

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


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