cprojf, cproj, cprojl
來自 cppreference.com
定義在標頭檔案 <complex.h> 中 |
||
(1) | (C99 起) | |
(2) | (C99 起) | |
(3) | (C99 起) | |
定義於標頭檔案 <tgmath.h> |
||
#define cproj( z ) |
(4) | (C99 起) |
1-3) 計算
z
在黎曼球面上的投影。4) 泛型宏:如果
z
的型別是 long double complex、long double imaginary 或 long double,則呼叫 cprojl
。如果 z
的型別是 float complex、float imaginary 或 float,則呼叫 cprojf
。如果 z
的型別是 double complex、double imaginary、double 或任何整數型別,則呼叫 cproj
。對於大多數 z
,cproj(z)==z,但所有復無窮大,即使是一個分量為無窮大而另一個為 NaN 的數,都變為正實無窮大,INFINITY+0.0*I 或 INFINITY-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