math.h
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
[editovat | editovat zdroj]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í
[editovat | editovat zdroj]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
[editovat | editovat zdroj]- C (programovací jazyk)
- C++
- Komentář (programování)
- escape sekvence
- stdio.h
- date.h
- iostream
- algoritmus
Reference
[editovat | editovat zdroj]- http://www.cppreference.com/wiki/cz/numeric/c/start – C++ Reference
- http://www.cplusplus.com/reference/clibrary/cmath/ Archivováno 24. 7. 2011 na Wayback Machine.