math.h je hlavičkový soubor standardní knihovny jazyka C, bývá také součástí jazyka C++. Tato knihovna implementuje matematické funkce pro reálná čísla (např. goniometrické funkce, logaritmy) s přesností double . Od standardu C99 definuje také funkce pro čísla s přesností float a long double . (Může obsahovat konstanty např. Ludolfovo číslo, Eulerovo číslo, ...). Hlavičkový soubor se do zdrojového kódu vkládá pomocí direktivy preprocesoru #include <math.h> (v C). V C++ oficiální standard místo math.h definuje knihovnu cmath, která implementuje stejnojmenné funkce jako math.h, musíme se tedy rozhodnout, kterou knihovnu chceme použít. Hlavička knihovny cmath se vkládá příkazem #include <cmath> , ale použití math.h v C++ z důvodu zpětné kompatibility také funguje.
Základní funkce knihovny math.h
Funkce knihovny math.h mají většinou "základní" variantu, která je v C-jazyku realizována s přesností double a potom variantu pro přesnost float a pro přesnost long double. Například:
- základní varianta je funkce sin, která má argument typu double a vrací hodnotu sinu v přesnosti double,
- funkce sinf má argument typu float a vrací hodnotu sinu jako float
- funkce sinl má argument typu long double a vrací hodnotu sinu jako long double
V jazyce C++ funguje math.h trochu odlišně, protože základní varianta funkce je definována s pomocí přetížení pro všechny přesnosti. U funkce sin potom záleží typ návratové hodnoty na typu argumentu:
- sin s argumentem typu float vrátí typ float
- sin s argumentem typu double vrátí typ double
- sin s argumentem typu long double vrátí typ long double
Varianty funkcí s přesností double a long double (tj. např. sinf a sinl) fungují v C++ stejně jako v klasickém C-jazyku.
Funkce |
Popis |
typ
|
fabs, fabsf, fabsl |
absolutní hodnota |
double, float, long double
|
sqrt, sqrtf, sqrtl |
druhá odmocnina |
double, float, long double
|
pow, powf, powl |
umocňování |
double, float, long double
|
log, logf, logl |
přirozený logaritmus |
double, float, long double
|
log10, log10f, log10l |
logaritmus se základem 10 |
double, float, long double
|
sin, sinf, sinl |
sinus |
double, float, long double
|
cos, cosf, cosl |
kosinus |
double, float, long double
|
tan, tanf, tanl |
tangens |
double, float, long double
|
acos, acosf, acosl |
arcus cosinus |
double, float, long double
|
asin, asinf, asinl |
arcus sinus |
double, float, long double
|
atan, atanf, atanl |
arcus tangens |
double, float, long double
|
atan2, atan2f, atan2l |
arcus tangens |
double, float, long double
|
sinh, sinhf, sinhl |
hyperbolický sinus |
double, float, long double
|
cosh, coshf, coshl |
hyperbolický cosinus |
double, float, long double
|
tanh, tanhf, tanhl |
hyperbolický tangens |
double, float, long double
|
ceil, ceilf, ceill |
vrátí nejbližší celé číslo ne menší než argument (zaokrouhlí nahoru) |
double, float, long double
|
floor, floorf, floorl |
vrátí nejbližší celé číslo ne větší než argument (zaokrouhlí dolů)
|
Příklad použití
Uvedený příklad by měl fungovat v jazyce C i C++.
Funkce pow(x,y) (z anglického power, což znamená umocňovat) umocňuje reálný základ x reálným číslem y. Číslo x nesmí být záporné, pokud není y celé číslo. Číslo x nesmí být nulové, pokud je y menší nebo rovné 0. Záporných hodnot se můžeme zbavit použitím funkce fabs(x) .
Funkci pow je možné použít i pro odmocňování, například pow(x, 1./2.) , je druhá odmocnina z x. Pro druhou odmocninu je lepší použít funkci sqrt(x) . #include <math.h>
#include <stdio.h>
int main()
{
double x, y, z;
printf("Zadejte cislo:");
scanf("%lf", &x);
y = sqrt(x);
z = pow(x, 3.);
printf("Druha odmocnina: %f\n", y);
printf("Treti mocnina: %f\n", z);
return 0;
}
Související články
Reference
|