Aracılığıyla paylaş


C karmaşık matematik desteği

Microsoft C Çalışma Zamanı kitaplığı (CRT), ISO C99 için gerekli olanlar da dahil olmak üzere karmaşık matematik kitaplığı işlevleri sağlar. Derleyici bir complex veya _Complex anahtar sözcüğünü doğrudan desteklemez, bu nedenle Microsoft uygulaması karmaşık sayıları temsil etmek için yapı türlerini kullanır.

Bu işlevler, performansı doğrulukla dengelemek için uygulanır. Doğru yuvarlatılmış sonucun üretilmesi çok pahalı olabileceğinden, bu işlevler doğru yuvarlanmış sonuca yakın bir tahmini verimli bir şekilde üretecek şekilde tasarlanmıştır. Çoğu durumda, üretilen sonuç doğru yuvarlanmış sonucun +/-1 en az duyarlık birimi (ULP) içindedir, ancak daha fazla yanlışlık olduğu durumlar olabilir.

Karmaşık matematik yordamları, uygulamaları için kayan nokta matematik kitaplığı işlevlerine dayanır. Bu işlevlerin farklı CPU mimarileri için farklı uygulamaları vardır. Örneğin, 32 bit x86 CRT, 64 bit x64 CRT'den farklı bir uygulamaya sahip olabilir. Ayrıca, bazı işlevlerin belirli bir CPU mimarisi için birden çok uygulaması olabilir. En verimli uygulama, CPU tarafından desteklenen yönerge kümelerine bağlı olarak çalışma zamanında dinamik olarak seçilir. Örneğin, 32 bit x86 CRT'de bazı işlevlerin hem x87 uygulaması hem de SSE2 uygulaması vardır. SSE2'yi destekleyen bir CPU üzerinde çalışırken, daha hızlı SSE2 uygulaması kullanılır. SSE2'yi desteklemeyen bir CPU üzerinde çalışırken, daha yavaş x87 uygulaması kullanılır. Matematik kitaplığı işlevlerinin farklı uygulamaları, sonuçlarını üretmek için farklı CPU yönergeleri ve farklı algoritmalar kullanabileceğinden, işlevler CPU'lar arasında farklı sonuçlar üretebilir. Çoğu durumda, sonuçlar doğru yuvarlanmış sonucun +/-1 ULP'sindedir, ancak gerçek sonuçlar CPU'lar arasında farklılık gösterebilir.

Karmaşık matematikte kullanılan türler

Üst bilginin Microsoft uygulaması complex.h , bu türleri C99 standart yerel karmaşık türleri için eşdeğerler olarak tanımlar:

Standart tür Microsoft türü
float complex veya float _Complex _Fcomplex
double complex veya double _Complex _Dcomplex
long double complex veya long double _Complex _Lcomplex

Üst math.h bilgi, struct _complexişlev için _cabs kullanılan ayrı bir türü tanımlar. Türstruct _complex, eşdeğer karmaşık matematik işlevleri cabs, , cabsfcabsltarafından kullanılmaz.

Karmaşık sabitler ve makrolar

Itarafından { 0.0f, 1.0f }başlatılan karmaşık tür _Fcomplex olarak tanımlanır.

Trigonometrik işlevler

İşlev Tanım
cacos, cacosf, cacosl Karmaşık bir sayının karmaşık ark kosinüsünü hesaplama
casin, casinf, casinl Karmaşık bir sayının karmaşık ark sinüsünü hesaplama
catan, catanf, catanl Karmaşık bir sayının karmaşık yay tanjantını hesaplama
ccos, ccosf, ccosl Karmaşık bir sayının karmaşık kosinüsünü hesaplama
csin, csinf, csinl Karmaşık bir sayının karmaşık sinüsünü hesaplama
ctan, ctanf, ctanl Karmaşık bir sayının karmaşık tanjantını hesaplama

Hiperbolik işlevler

İşlev Tanım
cacosh, cacoshf, cacoshl Karmaşık bir sayının karmaşık ark hiperbolik kosinüsünü hesaplama
casinh, casinhf, casinhl Karmaşık bir sayının karmaşık ark hiperbolik sinüsünü hesaplama
catanh, catanhf, catanhl Karmaşık bir sayının karmaşık ark hiperbolik tanjantını hesaplama
ccosh, ccoshf, ccoshl Karmaşık bir sayının karmaşık hiperbolik kosinüsünü hesaplama
csinh, csinhf, csinhl Karmaşık bir sayının karmaşık hiperbolik sinüsünü hesaplama
ctanh, ctanhf, ctanhl Karmaşık bir sayının karmaşık hiperbolik tanjantını hesaplama

Üstel ve logaritmik işlevler

İşlev Tanım
cexp, cexpf, cexpl Karmaşık bir sayının karmaşık taban-e üstel değerini hesaplama
clog, clogf, clogl Karmaşık bir sayının karmaşık doğal (temel-e) logaritması hesaplama
clog10, clog10f, clog10l Karmaşık bir sayının karmaşık 10 tabanında logaritması hesaplama

Güç ve mutlak değer işlevleri

İşlev Tanım
cabs, cabsf, cabsl Karmaşık bir sayının karmaşık mutlak değerini (norm, modül veya büyüklük olarak da adlandırılır) hesaplama
cpow, cpowf, cpowl Karmaşık güç işlevini hesaplama
csqrt, csqrtf, csqrtl Karmaşık bir sayının karmaşık karekökünü hesaplama

düzenleme işlevleri

İşlev Tanım
_Cbuild, _FCbuild, _LCbuild Gerçek ve hayali parçalardan karmaşık bir sayı oluşturma
carg, cargf, cargl Karmaşık bir sayının bağımsız değişkenini (faz açısı olarak da adlandırılır) hesaplama
cimag, cimagf, cimagl Karmaşık bir sayının sanal kısmını hesaplama
conj, conjf, conjl Karmaşık bir sayının karmaşık eşlemini hesaplama
cproj, cprojf, cprojl Karmaşık bir sayının Riemann küresine yansıtmasını hesaplama
creal, crealf, creall Karmaşık bir sayının gerçek kısmını hesaplama
norm, normf, norml Karmaşık bir sayının karesini hesaplama

İşlem işlevleri

Karmaşık sayılar Microsoft derleyicisinde yerel bir tür olmadığından, standart aritmetik işleçler karmaşık türlerde tanımlanmamıştır. Kolaylık sağlamak için bu karmaşık matematik kitaplığı işlevleri, kullanıcı kodundaki karmaşık sayıların sınırlı bir şekilde işlemesini sağlamak için sağlanır:

İşlev Tanım
_Cmulcc, _FCmulcc, _LCmulcc İki karmaşık sayıyı çarpma
_Cmulcr, _FCmulcr, _LCmulcr Karmaşık ve kayan noktalı bir sayıyı çarpma

Ayrıca bkz.

Tür-genel matematik
Kategoriye göre Evrensel C çalışma zamanı yordamları