命名空間
變體
動作

複數運算

出自 cppreference.com
< c‎ | numeric

若實作定義了巨集常數 __STDC_NO_COMPLEX__,則不提供複數型別、標頭檔 <complex.h> 以及此處列出的所有名稱。

(自 C11 起)

C 程式語言自 C99 起,透過三種內建型別 double _Complexfloat _Complexlong double _Complex 支援複數數學(參見 _Complex)。包含標頭檔 <complex.h> 後,這三種複數型別也可以分別透過 double complexfloat complexlong double complex 存取。

除了複數型別外,還可能支援三種虛數型別:double _Imaginaryfloat _Imaginarylong double _Imaginary(參見 _Imaginary)。包含標頭檔 <complex.h> 後,這三種虛數型別也可以分別透過 double imaginaryfloat imaginarylong double imaginary 存取。

標準算術運算子 +-*/ 可與實數、複數及虛數型別的任何組合一起使用。

建議(但非強制)編譯器定義 __STDC_IEC_559_COMPLEX__ 以支援虛數。POSIX 建議檢查是否定義了巨集 _Imaginary_I 來判斷是否支援虛數。

(自 C99 起)
(C11 前)

若定義了 __STDC_IEC_559_COMPLEX__ __STDC_IEC_60559_COMPLEX__(C23 起),則支援虛數。

(自 C11 起)
 
定義於標頭檔 <complex.h>

目錄

型別
虛數型別巨集
(關鍵字巨集) [編輯]
複數型別巨集
(關鍵字巨集) [編輯]
虛數常數
虛數單位常數 i
(巨集常數) [編輯]
複數單位常數 i
(巨集常數) [編輯]
(C99)
複數或虛數單位常數 i
(巨集常數) [編輯]
操作
(C11)(C11)(C11)
從實部與虛部建構複數
(函數巨集) [編輯]
(C99)(C99)(C99)
計算複數的實部
(函數) [編輯]
(C99)(C99)(C99)
計算複數的虛部
(函數) [編輯]
(C99)(C99)(C99)
計算複數的絕對值(模)
(函數) [編輯]
(C99)(C99)(C99)
計算複數的相位角
(函數) [編輯]
(C99)(C99)(C99)
計算複共軛
(函數) [編輯]
(C99)(C99)(C99)
計算在黎曼球面上的投影
(函數) [編輯]
指數函式
(C99)(C99)(C99)
計算複數以 e 為底的指數
(函數) [編輯]
(C99)(C99)(C99)
計算複數自然對數
(函數) [編輯]
冪函式
(C99)(C99)(C99)
計算複數冪函數
(函數) [編輯]
(C99)(C99)(C99)
計算複數平方根
(函數) [編輯]
三角函式
(C99)(C99)(C99)
計算複數正弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數餘弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數正切
(函數) [編輯]
(C99)(C99)(C99)
計算複數反正弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數反餘弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數反正切
(函數) [編輯]
雙曲函式
(C99)(C99)(C99)
計算複數雙曲正弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數雙曲餘弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數雙曲正切
(函數) [編輯]
(C99)(C99)(C99)
計算複數反雙曲正弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數反雙曲餘弦
(函數) [編輯]
(C99)(C99)(C99)
計算複數反雙曲正切
(函數) [編輯]

[編輯] 註解

下列函數名稱潛在地(C23 起)保留供未來新增至 <complex.h> 使用,包含該標頭檔的程式不得使用這些名稱:cerfcerfccexp2cexpm1clog10clog1pclog2clgammactgamma,以及 csinpiccospictanpicasinpicacospicatanpiccompoundncpowncpowrcrootncrsqrtcexp10m1cexp10cexp2m1clog10p1clog2p1clogp1(C23 起),以及它們帶有 -f 與 -l 字尾的變體。

雖然 C 標準將反雙曲函數命名為「複數反雙曲正弦」(complex arc hyperbolic sine) 等,但雙曲函數的反函數應為「區域」(area) 函數。其參數為雙曲扇形的面積,而非弧。正確的名稱應為「複數反雙曲正弦」(complex inverse hyperbolic sine) 等。部分作者使用「複數區域雙曲正弦」(complex area hyperbolic sine) 等名稱。

若複數或虛數的其中一部分為無窮大(即使另一部分為 NaN),則該數為無窮大。

若複數或虛數的兩個部分皆既非無窮大也非 NaN,則該數為有限數。

若複數或虛數的兩個部分皆為正零或負零,則該數為零。

雖然 MSVC 確實提供了 <complex.h> 標頭檔,但它並未將複數實作為原生型別,而是作為 struct(結構)實作,這與標準 C 複數型別不相容,且不支援 +-*/ 運算子。

[編輯] 範例

#include <complex.h>
#include <stdio.h>
#include <tgmath.h>
 
int main(void)
{
    double complex z1 = I * I;     // imaginary unit squared
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z2 = pow(I, 2); // imaginary unit squared
    printf("pow(I, 2) = %.1f%+.1fi\n", creal(z2), cimag(z2));
 
    double PI = acos(-1);
    double complex z3 = exp(I * PI); // Euler's formula
    printf("exp(I*PI) = %.1f%+.1fi\n", creal(z3), cimag(z3));
 
    double complex z4 = 1 + 2 * I, z5 = 1 - 2 * I; // conjugates
    printf("(1+2i)*(1-2i) = %.1f%+.1fi\n", creal(z4 * z5), cimag(z4 * z5));
}

輸出

I * I = -1.0+0.0i
pow(I, 2) = -1.0+0.0i
exp(I*PI) = -1.0+0.0i
(1+2i)*(1-2i) = 5.0+0.0i

[編輯] 參考文獻

延伸內容
  • C23 標準 (ISO/IEC 9899:2024)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: TBD)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: TBD)
  • 7.3 複數算術 <complex.h> (p: TBD)
  • 7.25 型別泛型數學 <tgmath.h> (p: TBD)
  • 7.31.1 複數算術 <complex.h> (p: TBD)
  • 附錄 G (規範性) IEC 60559 相容複數算術 (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 128)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 128)
  • 7.3 複數算術 <complex.h> (p: 136-144)
  • 7.25 型別泛型數學 <tgmath.h> (p: 272-273)
  • 7.31.1 複數算術 <complex.h> (p: 391)
  • 附錄 G (規範性) IEC 60559 相容複數算術 (p: 469-479)
  • C11 標準 (ISO/IEC 9899:2011)
  • 6.10.8.3/1/2 __STDC_NO_COMPLEX__ (p: 177)
  • 6.10.8.3/1/2 __STDC_IEC_559_COMPLEX__ (p: 177)
  • 7.3 複數算術 <complex.h> (p: 188-199)
  • 7.25 型別泛型數學 <tgmath.h> (p: 373-375)
  • 7.31.1 複數算術 <complex.h> (p: 455)
  • 附錄 G (規範性) IEC 60559 相容複數算術 (p: 532-545)
  • C99 標準 (ISO/IEC 9899:1999)
  • 6.10.8/2 __STDC_IEC_559_COMPLEX__ (p: 161)
  • 7.3 複數算術 <complex.h> (p: 170-180)
  • 7.22 型別泛型數學 <tgmath.h> (p: 335-337)
  • 7.26.1 複數算術 <complex.h> (p: 401)
  • 附錄 G (資訊性) IEC 60559 相容複數算術 (p: 467-480)

[編輯] 參見

C++ 文件 關於 複數算術
English Deutsch 日本語 中文(简体) 中文(繁體)