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 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á).
#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; }
#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; }
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.
#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; }
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.
#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; }
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; }
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.