Knihovna math.h
Standardní knihovna <math.h> obsahuje spoustu funkcí,
které vykonávají běžné matematické operace. Jejich parametry i
návratové hodnoty jsou většinou typu double
. Kromě funkcí v
této knihovně také naleznete užitečná makra, jako M_PI
jež je hodnotou pí.
V systémech Linux/UNIX budete možná muset překladači gcc předat argument -lm, který zajistí použití sdílené matematické knihovny systému UNIX – zkratkou pro /lib/i386-linux-gnu/libm.so.6, nebo tak něco.
Překlad na příkazové řádce pomocí gcc
může vypadat nějak takto:
Výčet funkcí
- Vrací sinus argumentu.
- Vrací kosinus argumentu.
- Vrací tangens argumentu.
- Vrací arcu ssinus argumentu.
- Vrací arkus kosinus argumentu.
- Vrací arkus tangens argumentu.
- Funkce atan2() počítá arkus tangens dvou proměnných x a
y. Výpočet je podobný výpočtu arkus tangens
y / x, kromě toho, že znaménka obou argumentů jsou
použita pro určení kvadrantu, ve kterém se nachází výsledná
hodnota. Funkce
atan2()
vrací výsledek v radiánech, který je mezi -PI a PI včetně. - Vrací absolutní hodnotu argumentu typu int. Tato funkce není kupodivu definována v <math.h> ale <stdlib.h>. Přesto jsem si ji sem dovolil zařadit.
- Vrací absolutní hodnotu argumentu typu double.
- Zaokrouhlí argument na nejmenší „vyšší“ celé číslo.
- Zaokrouhlí argument na nejbližší „nižší“ celé číslo.
- Zaokrouhlí číslo na nejbližší celé číslo.
- Vrací hodnotu e (základ přirozených algoritmů) umocněnou na x.
- Vrací hodnotu přirozeného algoritmu x.
- Vrací hodnotu desítkového logaritmu x
- Vrací hodnotu x na y (2^3=8).
- Vrací odmocninu z čísla x.
- Funkce
fmod()
počítá hodnotu zbytku podílu x děleno y.
Návratová hodnota jex - n * y
, kde n je podíl x / y, zaokrouhlený směrem k nule na celé číslo. Jinak řečeno, vrací celočíselný zbytek po celočíselném dělení. - Vrátí desetinnou část x a celou část uloží tam, kam ukazuje iptr.
- Vrátí menší ze zadaných čísel.
- Vrátí větší ze zadaných čísel.
Příklad použití
Použití těchto funkcí se mi zdá natolik triviální, že snad není k příkladu třeba žádného komentáře.
- /*------------------------------------------------*/
- /* c21/matika.c */
- #include <stdio.h>
- #define _USE_MATH_DEFINES /* Kvuli Visual Studio */
- #include <math.h>
- {
- int ia;
- float fa;
- double da;
- /* kresleni sinusove vlny */
- }
- #define MODF 5.5
- 100.0, 3.0, fmod(100.0, 3.0), MODF, fa, da);
- }
- /*------------------------------------------------*/
Bez makra _USE_MATH_DEFINES
by Visual Studio nezavedlo makra M_PI
atp.
Musí se uvádět před includováním <math.h>.
Výstup z programu:
* * * * * * * * * * * * * * * * * * * * * * * * * * ceil(5.900000)=6.000000 floor(5.900000)=5.000000 ceil(5.100000)=6.000000 floor(5.100000)=5.000000 fmod(100.00,3.00)=1.00 modf(5.50,&y)=0.50 --> y=5.00 min(537, -4) = -4.000000