Standart C Programlama Dili


9.2. complex.h: Karmaşık Sayı Aritmetiği

Bu dosyada karmaşık sayı işlemleri için gerekli olan makro ve fonksiyonlar tanımlanır. Eğer derleyici tarafından __STDC_NO_COMPLEX__ makrosu tanımlanmışsa, o zaman burada anlatılan özelliklerin desteklenmesine ve complex.h başlık dosyasının o ortamda tanımlanmasına gerek yoktur.

Karmaşık sayılar C Standardının _Complex veri tipi kullanılarak şu şekillerden biri ile tanımlanırlar: double _Complex, float _Complex veya long double _Complex.

#define complex    _Complex
#define _Complex_I (1.0iF)    /* sanal birim: i sayısı */

Eğer sanal sayılar destekleniyorsa, o zaman aşağıdaki tanımlar da bu dosyada olabilir:

#define imaginary    _Imaginary
#define _Imaginary_I (1.0iF)    /* sanal birim: i sayısı */

I makrosu, eğer _Imaginary_I tanımlı ise ona, yoksa _Complex_I makrosuna eşdeğer olarak tanımlanır.

complex.h dosyasında aşağıdaki karmaşık sayı fonksiyon veya makroları tanımlanmıştır:

Trigonometrik

double complex       cacos(double complex z)
float complex        cacosf(float complex z)
long double complex  cacosl(long double complex z)
double complex       casin(double complex z)
float complex        casinf(float complex z)
long double complex  casinl(long double complex z)
double complex       catan(double complex z)
float complex        catanf(float complex z)
long double complex  catanl(long double complex z)
double complex       ccos(double complex z)
float complex        ccosf(float complex z)
long double complex  ccosl(long double complex z)
double complex       csin(double complex z)
float complex        csinf(float complex z)
long double complex  csinl(long double complex z)
double complex       ctan(double complex z)
float complex        ctanf(float complex z)
long double complex  ctanl(long double complex z)

Hiperbolik

double complex       cacosh(double complex z)
float complex        cacoshf(float complex z)
long double complex  cacoshl(long double complex z)
double complex       casinh(double complex z)
float complex        casinhf(float complex z)
long double complex  casinhl(long double complex z)
double complex       catanh(double complex z)
float complex        catanhf(float complex z)
long double complex  catanhl(long double complex z)
double complex       ccosh(double complex z)
float complex        ccoshf(float complex z)
long double complex  ccoshl(long double complex z)
double complex       csinh(double complex z)
float complex        csinhf(float complex z)
long double complex  csinhl(long double complex z)
double complex       ctanh(double complex z)
float complex        ctanhf(float complex z)
long double complex  ctanhl(long double complex z)

Üstel Ve Logaritmik

double complex       cexp(double complex z)
float complex        cexpf(float complex z)
long double complex  cexpl(long double complex z)
double complex       clog(double complex z)
float complex        clogf(float complex z)
long double complex  clogl(long double complex z)

Güç Ve Mutlak Değer

double               cabs(double complex z)
float                cabsf(float complex z)
long double          cabsl(long double complex z)
double complex       cpow(double complex x, double complex y)
float complex        cpowf(float complex x, float complex y)
long double complex  cpowl(long double complex x, long double complex y)
double complex       csqrt(double complex z)
float complex        csqrtf(float complex z)
long double complex  csqrtl(long double complex z)

İşleme

double               carg(double complex z)
float                cargf(float complex z)
long double          cargl(long double complex z)
double               cimag(double complex z)
float                cimagf(float complex z)
long double          cimagl(long double complex z)
double complex       CMPLX(double x, double y)
float complex        CMPLXF(float x, float y)
long double complex  CMPLXL(long double x, long double y)
double complex       conj(double complex z)
float complex        conjf(float complex z)
long double complex  conjl(long double complex z)
double complex       cproj(double complex z)
float complex        cprojf(float complex z)
long double complex  cprojl(long double complex z)
double               creal(double complex z)
float                crealf(float complex z)
long double          creall(long double complex z)

Not: Karmaşık çarpma, bölme ve mutlak değer alma için normalde kullanılan matematiksel formüller, sonsuzlukları ve taşma durumlarını ele alış şekilleri açısından sorunludurlar. CX_LIMITED_RANGE pragması (ON durumunda iken) olağan matematiksel formüllerin kabul edilebilir olduğu konusunda derleyiciye bilgi vermek için kullanılabilir.