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 _complex
işlev için _cabs
kullanılan ayrı bir türü tanımlar. Türstruct _complex
, eşdeğer karmaşık matematik işlevleri cabs
, , cabsf
cabsl
tarafından kullanılmaz.
Karmaşık sabitler ve makrolar
I
tarafından { 0.0f, 1.0f }
başlatılan karmaşık tür _Fcomplex
olarak tanımlanır.
Trigonometrik işlevler
İşlev | Açıklama |
---|---|
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 | Açıklama |
---|---|
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 | Açıklama |
---|---|
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 | Açıklama |
---|---|
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 | Açıklama |
---|---|
_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 | Açıklama |
---|---|
_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ı