Libfixmath - Libfixmath
Vývojáři | Ben Brewer (aka flatmush) |
---|---|
Stabilní uvolnění | r64 / 2. února 2012 |
Úložiště | |
Napsáno | C99 |
Operační systém | Cross-platform |
Typ | matematická knihovna s pevným bodem |
Licence | MIT |
webová stránka | https://github.com/PetteriAimonen/libfixmath |
libfixmath je nezávislý na platformě pevný bod matematická knihovna zaměřená na vývojáře, kteří chtějí provádět rychlou nečíselnou matematiku na platformách bez (nebo s nízkým výkonem) FPU. Nabízí vývojářům podobné rozhraní jako standard matematika funkce pro použití na Q16.16 pevný bod numbers.libfixmath nemá žádné jiné externí závislosti než stdint.h a kompilátor, který podporuje 64-bit celočíselná aritmetika (např GCC ).[1]Existují možnosti podmíněné kompilace k odstranění požadavku na 64-bit schopný překladač tolik překladačů pro mikrokontroléry a DSP nepodporují 64-bit aritmetický.[2]
Dějiny
libfixmath byl původně vyvinut Benem Brewerem (alias flatmush) a poprvé veřejně vydán jako součást Dingoo SDK.[3] Od té doby se používá k implementaci softwaru 3D grafika knihovna s názvem FGL.[4]
Q16.16 Funkce
název | Popis |
---|---|
fix16_acos | inverzní kosinus |
fix16_asin | inverzní sinus |
fix16_atan | jednoparametrická inverzní tečna |
fix16_atan2 | dvouparametrická inverzní tečna |
fix16_cos | kosinus |
fix16_exp | exponenciální funkce |
fix16_sin | sinus |
fix16_sqrt | odmocnina |
fix16_tan | tečna |
fix16_mul | násobení |
fix16_div | divize |
fix16_sadd | nasycený přidání |
fix16_smul | nasycený násobení |
fix16_sdiv | nasycený divize |
Další funkce
název | Popis |
---|---|
fix16_to_dbl | Konvertovat Q16.16 do a dvojnásobek |
fix16_to_float | Konvertovat Q16.16 do a plovák |
fix16_to_int | Konvertovat Q16.16 do celé číslo |
fix16_from_dbl | Konvertovat dvojnásobek do a Q16.16 |
fix16_from_float | Konvertovat plovák do a Q16.16 |
fix16_from_int | Konvertovat celé číslo do a Q16.16 |
Výkon
Pro nejintenzivnější funkci (atan2 ) srovnávací výsledky ukazují následující výsledky:
název | Čas ve srovnání s plovoucí |
---|---|
ARM Cortex-M0 | 26.3% |
Marvell PXA270 (PAŽE ) @ 312 MHz | 58.45% |
Intel T5500 | 120% |
Intel Atom N280 | 141% |
Poznámka: Tyto výsledky byly vypočítány pomocí fixtest s vypnutou optimalizací ukládání do mezipaměti.[5]
Licencování
libfixmath je propuštěn pod Licence MIT, a tolerantní bezplatná softwarová licence, a je svobodný software.