[go: up one dir, main page]

Přeskočit na obsah

math.h

Z Wikipedie, otevřené encyklopedie

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]