Bagikan melalui


Dukungan matematika kompleks C

Pustaka Microsoft C Runtime (CRT) menyediakan fungsi pustaka matematika yang kompleks, termasuk semua yang diperlukan oleh ISO C99. Pengkompilasi tidak secara langsung mendukung complex kata kunci atau _Complex , oleh karena itu implementasi Microsoft menggunakan jenis struktur untuk mewakili angka kompleks.

Fungsi-fungsi ini diimplementasikan untuk menyeimbangkan performa dengan kebenaran. Karena menghasilkan hasil yang dibulatkan dengan benar mungkin sangat mahal, fungsi-fungsi ini dirancang untuk secara efisien menghasilkan perkiraan yang dekat dengan hasil yang dibulatkan dengan benar. Dalam kebanyakan kasus, hasil yang dihasilkan berada dalam +/-1 unit presisi paling sedikit (ULP) dari hasil yang dibulatkan dengan benar, meskipun mungkin ada kasus di mana ada ketidakakuratan yang lebih besar.

Rutinitas matematika yang kompleks mengandalkan fungsi pustaka matematika titik apung untuk implementasinya. Fungsi-fungsi ini memiliki implementasi yang berbeda untuk arsitektur CPU yang berbeda. Misalnya, CRT x86 32-bit mungkin memiliki implementasi yang berbeda dari CRT x64 64-bit. Selain itu, beberapa fungsi mungkin memiliki beberapa implementasi untuk arsitektur CPU tertentu. Implementasi yang paling efisien dipilih secara dinamis pada run-time tergantung pada set instruksi yang didukung oleh CPU. Misalnya, dalam CRT x86 32-bit, beberapa fungsi memiliki implementasi x87 dan implementasi SSE2. Saat berjalan pada CPU yang mendukung SSE2, implementasi SSE2 yang lebih cepat digunakan. Saat berjalan pada CPU yang tidak mendukung SSE2, implementasi x87 yang lebih lambat digunakan. Karena implementasi yang berbeda dari fungsi pustaka matematika dapat menggunakan instruksi CPU yang berbeda dan algoritma yang berbeda untuk menghasilkan hasilnya, fungsi dapat menghasilkan hasil yang berbeda di seluruh CPU. Dalam kebanyakan kasus, hasilnya berada dalam +/-1 ULP dari hasil yang dibulatkan dengan benar, tetapi hasil aktual dapat bervariasi di seluruh CPU.

Jenis yang digunakan dalam matematika kompleks

Implementasi complex.h header Microsoft mendefinisikan jenis ini sebagai setara untuk jenis kompleks asli standar C99:

Jenis standar Jenis Microsoft
float complex atau float _Complex _Fcomplex
double complex atau double _Complex _Dcomplex
long double complex atau long double _Complex _Lcomplex

Header math.h menentukan jenis terpisah, struct _complex, digunakan untuk _cabs fungsi . Jenis struct _complex tidak digunakan oleh fungsicabs matematika kompleks yang setara , ,cabsfcabsl .

Konstanta dan makro yang kompleks

I didefinisikan sebagai jenis _Fcomplex kompleks yang diinisialisasi oleh { 0.0f, 1.0f }.

Fungsi trigonometri

Fungsi Deskripsi
cacos, , cacosfcacosl Menghitung kosinus busur kompleks dari bilangan kompleks
casin, , casinfcasinl Menghitung sinus busur kompleks dari bilangan kompleks
catan, , catanfcatanl Menghitung tangen busur kompleks dari bilangan kompleks
ccos, , ccosfccosl Menghitung kosinus kompleks dari bilangan kompleks
csin, , csinfcsinl Menghitung sinus kompleks dari bilangan kompleks
ctan, , ctanfctanl Menghitung tangen kompleks dari bilangan kompleks

Fungsi hiperbolik

Fungsi Deskripsi
cacosh, , cacoshfcacoshl Menghitung kosinus hiperbolik busur kompleks dari bilangan kompleks
casinh, , casinhfcasinhl Menghitung sinus hiperbolik busur kompleks dari bilangan kompleks
catanh, , catanhfcatanhl Menghitung tangen hiperbolik busur kompleks dari bilangan kompleks
ccosh, , ccoshfccoshl Menghitung kosinus hiperbolik kompleks dari bilangan kompleks
csinh, , csinhfcsinhl Menghitung sinus hiperbolik kompleks dari bilangan kompleks
ctanh, , ctanhfctanhl Menghitung tangen hiperbolik kompleks dari bilangan kompleks

Fungsi eksponensial dan logaritma

Fungsi Deskripsi
cexp, , cexpfcexpl Menghitung eksponensial base-e kompleks dari bilangan kompleks
clog, , clogfclogl Menghitung logaritma alami kompleks (base-e) dari bilangan kompleks
clog10, , clog10fclog10l Menghitung logaritma base-10 kompleks dari bilangan kompleks

Fungsi daya dan nilai absolut

Fungsi Deskripsi
cabs, , cabsfcabsl Menghitung nilai absolut yang kompleks (juga disebut norma, modulus, atau besaran) dari bilangan kompleks
cpow, , cpowfcpowl Menghitung fungsi daya yang kompleks
csqrt, , csqrtfcsqrtl Menghitung akar kuadrat kompleks dari bilangan kompleks

Fungsi manipulasi

Fungsi Deskripsi
_Cbuild, , _FCbuild_LCbuild Membuat bilangan kompleks dari bagian nyata dan imajiner
carg, , cargfcargl Menghitung argumen (juga disebut sudut fase) dari bilangan kompleks
cimag, , cimagfcimagl Menghitung bagian imajiner dari bilangan kompleks
conj, , conjfconjl Menghitung konjugasi kompleks dari bilangan kompleks
cproj, , cprojfcprojl Menghitung proyeksi bilangan kompleks ke bola Riemann
creal, , crealfcreall Menghitung bagian nyata dari bilangan kompleks
norm, , normfnorml Menghitung besaran kuadrat dari bilangan kompleks

Fungsi operasi

Karena bilangan kompleks bukan jenis asli dalam pengkompilasi Microsoft, operator aritmatika standar tidak ditentukan pada jenis kompleks. Untuk kenyamanan, fungsi pustaka matematika kompleks ini disediakan untuk memungkinkan manipulasi terbatas angka kompleks dalam kode pengguna:

Fungsi Deskripsi
_Cmulcc, , _FCmulcc_LCmulcc Mengalikan dua bilangan kompleks
_Cmulcr, , _FCmulcr_LCmulcr Mengalikan bilangan kompleks dan titik mengambang

Lihat juga

Matematika generik jenis
Rutinitas runtime Universal C menurut kategori