名稱空間
變體
操作

cprojf, cproj, cprojl

來自 cppreference.com
< c‎ | 數值‎ | 複數
定義在標頭檔案 <complex.h>
float complex       cprojf( float complex z );
(1) (C99 起)
double complex      cproj( double complex z );
(2) (C99 起)
long double complex cprojl( long double complex z );
(3) (C99 起)
定義於標頭檔案 <tgmath.h>
#define cproj( z )
(4) (C99 起)
1-3) 計算 z 在黎曼球面上的投影。
4) 泛型宏:如果 z 的型別是 long double complexlong double imaginarylong double,則呼叫 cprojl。如果 z 的型別是 float complexfloat imaginaryfloat,則呼叫 cprojf。如果 z 的型別是 double complexdouble imaginarydouble 或任何整數型別,則呼叫 cproj

對於大多數 zcproj(z)==z,但所有復無窮大,即使是一個分量為無窮大而另一個為 NaN 的數,都變為正實無窮大,INFINITY+0.0*IINFINITY-0.0*I。虛(零)分量的符號是 cimag(z) 的符號。

目錄

[編輯] 引數

z - 複數引數

[編輯] 返回值

z 在黎曼球面上的投影。

此函式對所有可能的輸入都完全指定,不受 math_errhandling 中描述的任何錯誤的影響。

[編輯] 注意

cproj 函式透過將所有無窮大對映到一個點(忽略虛零的符號),幫助對黎曼球面進行建模,並且應該在任何可能對其他無窮大給出錯誤結果的操作(尤其是比較操作)之前使用。

[編輯] 示例

#include <stdio.h>
#include <complex.h>
#include <math.h>
 
int main(void)
{
    double complex z1 = cproj(1 + 2*I);
    printf("cproj(1+2i) = %.1f%+.1fi\n", creal(z1),cimag(z1));
 
    double complex z2 = cproj(INFINITY+2.0*I);
    printf("cproj(Inf+2i) = %.1f%+.1fi\n", creal(z2),cimag(z2));
 
    double complex z3 = cproj(INFINITY-2.0*I);
    printf("cproj(Inf-2i) = %.1f%+.1fi\n", creal(z3),cimag(z3));
}

輸出

cproj(1+2i) = 1.0+2.0i
cproj(Inf+2i) = inf+0.0i
cproj(Inf-2i) = inf-0.0i

[編輯] 參考

  • C11 標準 (ISO/IEC 9899:2011)
  • 7.3.9.5 cproj 函式 (p: 198)
  • 7.25 型別通用數學 <tgmath.h> (p: 373-375)
  • G.7 型別通用數學 <tgmath.h> (p: 545)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.3.9.4 cproj 函式 (p: 179)
  • 7.22 型別通用數學 <tgmath.h> (p: 335-337)
  • G.7 型別通用數學 <tgmath.h> (p: 480)

[編輯] 另請參閱

C++ 文件,關於 proj