Podpora komplexní matematiky jazyka C
Knihovna CRT (Microsoft C Runtime Library) poskytuje komplexní matematické funkce knihovny, včetně všech funkcí vyžadovaných iso C99. Kompilátor přímo nepodporuje ani complex
_Complex
klíčové slovo, proto implementace Microsoftu používá typy struktur k reprezentaci komplexních čísel.
Tyto funkce se implementují pro vyvážení výkonu s správností. Vzhledem k tomu, že vytvoření správně zaokrouhleného výsledku může být příliš nákladné, jsou tyto funkce navrženy tak, aby efektivně vytvářely blízkou aproximaci správně zaokrouhleného výsledku. Ve většině případů je výsledek v rozsahu +/-1 s nejnižší přesností (ULP) správně zaokrouhleného výsledku, i když může docházet k případům, kdy je větší nepřesnost.
Složité matematické rutiny spoléhají na funkce matematické knihovny s plovoucí desetinou čárkou pro jejich implementaci. Tyto funkce mají různé implementace pro různé architektury procesoru. Například 32bitová verze x86 CRT může mít jinou implementaci než 64bitová verze x64 CRT. Některé funkce navíc můžou mít několik implementací pro danou architekturu procesoru. Nejúčinnější implementace je vybrána dynamicky za běhu v závislosti na sadách instrukcí podporovaných procesorem. Například v 32bitovém x86 CRT mají některé funkce implementaci x87 i implementaci SSE2. Při spouštění na procesoru, který podporuje SSE2, se použije rychlejší implementace SSE2. Při spouštění na procesoru, který nepodporuje SSE2, se používá pomalejší implementace x87. Vzhledem k tomu, že různé implementace funkcí matematické knihovny mohou k vytvoření výsledků použít různé instrukce procesoru a různé algoritmy, můžou funkce vytvářet různé výsledky napříč procesory. Ve většiněpřípadůch
Typy používané v komplexní matematikě
Implementace complex.h
hlavičky Microsoftu definuje tyto typy jako ekvivalenty pro standardní nativní komplexní typy C99:
Standardní typ | Typ Microsoftu |
---|---|
float complex nebo float _Complex |
_Fcomplex |
double complex nebo double _Complex |
_Dcomplex |
long double complex nebo long double _Complex |
_Lcomplex |
Hlavička math.h
definuje samostatný typ, struct _complex
který se používá pro _cabs
funkci. Typ struct _complex
není používán ekvivalentními komplexními matematickými funkcemi cabs
, cabsf
, cabsl
.
Komplexní konstanty a makra
I
je definován jako komplexní typ _Fcomplex
inicializován pomocí { 0.0f, 1.0f }
.
Trigonometrické funkce
Function | Popis |
---|---|
cacos , cacosf , cacosl |
Výpočet komplexního kosinusu oblouku komplexního čísla |
casin , casinf , casinl |
Výpočet komplexního arkusového sinus komplexního čísla |
catan , catanf , catanl |
Výpočet komplexního arkusového tangens komplexního čísla |
ccos , ccosf , ccosl |
Výpočet komplexního kosinus komplexního čísla |
csin , csinf , csinl |
Výpočet komplexního sinusu komplexního čísla |
ctan , ctanf , ctanl |
Výpočet komplexní tangens komplexního čísla |
Hyperbolické funkce
Function | Popis |
---|---|
cacosh , cacoshf , cacoshl |
Výpočet komplexního hyperbolického kosinus komplexního čísla |
casinh , casinhf , casinhl |
Vypočítá hyperbolický arkus komplexního čísla. |
catanh , catanhf , catanhl |
Výpočet hyperbolického hyperbolického arkusu komplexního čísla |
ccosh , ccoshf , ccoshl |
Výpočet komplexního hyperbolického kosinus komplexního čísla |
csinh , csinhf , csinhl |
Výpočet komplexního hyperbolického sinusu komplexního čísla |
ctanh , ctanhf , ctanhl |
Výpočet komplexního hyperbolického tangensu komplexního čísla |
Exponenciální a logaritmické funkce
Function | Popis |
---|---|
cexp , cexpf , cexpl |
Výpočet komplexního základu e exponenciálního čísla komplexního čísla |
clog , clogf , clogl |
Výpočet komplexního přirozeného logaritmu (base-e) komplexního čísla |
clog10 , clog10f , clog10l |
Vypočítá komplexní logaritmus komplexního čísla o základu 10. |
Funkce výkonu a absolutní hodnoty
Function | Popis |
---|---|
cabs , cabsf , cabsl |
Vypočítá komplexní absolutní hodnotu (označovanou také jako normu, moduls nebo velikost) komplexního čísla. |
cpow , cpowf , cpowl |
Výpočet komplexní funkce napájení |
csqrt , csqrtf , csqrtl |
Vypočítá komplexní druhou odmocninu komplexního čísla. |
Funkce manipulace
Function | Popis |
---|---|
_Cbuild , _FCbuild , _LCbuild |
Vytvoření komplexního čísla ze skutečných a imaginárních částí |
carg , cargf , cargl |
Výpočet argumentu (označovaného také jako úhel fáze) komplexního čísla |
cimag , cimagf , cimagl |
Výpočet imaginární části komplexního čísla |
conj , conjf , conjl |
Výpočet komplexního konjugování komplexního čísla |
cproj , cprojf , cprojl |
Výpočet projekce komplexního čísla do Riemannovy sféry |
creal , crealf , creall |
Výpočet reálné části komplexního čísla |
norm , normf , norml |
Výpočet čtvercové velikosti komplexního čísla |
Funkce operací
Vzhledem k tomu, že komplexní čísla nejsou nativním typem v kompilátoru Microsoftu, standardní aritmetické operátory nejsou definovány u komplexních typů. Pro usnadnění práce jsou k dispozici tyto komplexní matematické funkce knihovny, které umožňují omezenou manipulaci se složitými čísly v uživatelském kódu:
Function | Popis |
---|---|
_Cmulcc , _FCmulcc , _LCmulcc |
Násobení dvou komplexních čísel |
_Cmulcr , _FCmulcr , _LCmulcr |
Násobení komplexního a číslo s plovoucí desetinou čárkou |
Viz také
Matematika pro obecné typy
Rutiny UCRT (Universal C runtime) podle kategorie
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro