Matematické funkce
C i C++ je jako většina programovacích jazyků vybavena knihovnou s nejběžnějšími matematickými funkcemi. Tyto funkce můžeme nalézt v knihovnách <math.h>
, <stdlib.h>
pro jazyk C a v knihovnách <cmath>
, <cstdlib>
pro jazyk C++. Zde pro přehled uvedeme ty nejpoužívanější z nich.
Absolutní hodnota - abs(), fabs(), std::abs()
Absolutní hodnota je funkce, která má v jazycích C/C++ dvě varianty: celočíselnou v knihovách <stdlib.h>
/<cstdlib>
a s plovoucí čárkou v knihovnách <math.h>
/<cmath>
. V moderních implementacích (od C++17) stačí includovat pouze jednu z uvedených knihoven a lze pak používat funkci std::abs() jak pro datové typy s plovoucí čárkou, tak i celočíselné (je přetížená).
Ukázka použití funkcí abs() a fabs() (C implementace)
#include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int x = -42; double y = 6.34; int ax = abs(x); double ay = fabs(ay); printf("|%d| = %d\n", x, ax); printf("|%f| = %f\n", y, ay); return 0; }
Ukázka použití funkce std::abs() (C++17 implementace)
#include <cstdio> #include <cstdlib> #include <cmath> int main() { int x = -42; double y = 6.34; int ax = std::abs(x); double ay = std::abs(ay); std::printf("|%d| = %d\n", x, ax); std::printf("|%f| = %f\n", y, ay); return 0; }
Mocnina - pow()
Pokud chceme například vypočítat jen X², stačí double xna2 = x * x;
– není třeba využívat sofistikovanou matematickou funkci. Pro složitější mocniny se hodí C funkce
double pow(double zaklad, double exponent)
, případně float powf(float zaklad, float exponent)
nebo plně přetížená C++11 funkce std::pow()
, která umožňuje operandy všech číselných typů, včetně různého typu mezi operandy.
Ukázka použití funkce pow()
#include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double x = 2; double y = 6; double vysl = pow(x, y); printf("%f^%f = %lf\n", x, y, vysl); return 0; }
Druhá odmocnina - sqrt()
Pro výpočet druhé odmocniny slouží knihovní funkce double sqrt(double cislo)
, případně float sqrtf(float cislo)
, nebo přetíženou funkci std::sqrt()
. Pro hledání odmocnin s vyšším odmocnitelem lze použít funkci pow()
s exponentem ve formátu zlomku.
Ukázka použití funkce sqrt()
#include <stdlib.h> #include <stdio.h> #include <math.h> int main() { double x = 169; double vysl = sqrt(x); printf("Odmocnina z %f je %lf\n", x, vysl); return 0; }
Konstanta PI
Aby jsme mohli použít knihovní konstantu pro číslo pi, pojmenovanou M_PI
je třeba před samotným includováním matematické knihovny definovat symbol matematických konstant - viz ukázka.
#include <stdlib.h> #include <stdio.h> #define _USE_MATH_DEFINES #include <math.h> int main() { printf("Pi = %f\n", M_PI); return 0; }
Goniometrické funkce
Všechny goniometrické funkce v knihovně jazyka C pracují s úhly v radiánech v datovém typu double. Pokud je potřeba použít úhel v datovém typu float, lze na konec názvu funkce přidat f (cos → cosf). Jako obvykle jsou k dispozici i přetížené funkce jazyka C++, které jsou uloženy v namespace std::
.
Matematická funkce | Funkce z knihovny |
---|---|
Kosinus | cos(double rad) |
Sinus | sin(double rad) |
Tangens | tan(double rad) |
Arkus kosinus | acos(double cos) |
Arkus sinus | asin(double sin) |
Arkus tangens | atan(double tan) |
Konkrétní rozsahy výstupních hodnot inverzních funkcí doporučujeme předem prostudovat v referenční příručce - viz Odkazy.