Deklaracja
double pow (double x, double y); float powf(float x, float y); long double powl(long double x, long double y);
double sqrt (double x); float sqrtf(float x); long double sqrtl(long double x);
double hypot (double x, double y); float hypotf(float x, float y); long double hypotl(long double x, long double y);
double cbrt (double x); float cbrtf(float x); long double cbrtl(long double x);
double fabs (double x); float fabsf(float x); long double fabsl(long double x);
Plik nagłówkowy math.h
Argumenty x, y argumenty funkcji
Opis Funkcje z przyrostkami "f" i "l" to inne wersje odpowiedniej funkcji bez przyrostka operujące na innych typach danych. Z tego powodu w poniższym opisie odwołanie do konkretnej funkcji będzie oznaczać odwołanie się do wszystkich 3 wersji.
Funkcje obliczają następujące wartości: pow - x do potęgi y, tj. , sqrt - pierwiastek kwadratowy argumentu, tj. , hypot - pierwiastek kwadratowy z sumy kwadratów argumentów, tj. , cbrt - pierwiastek sześcienny argumentu, tj. , fabs - wartość bezwzględna argumentu, tj. .
Jeżeli x jest liczbą ujemną funkcje sqrt ustawiają zmienną errno na EDOM. Tak samo zachowuje się funkcja pow, jeżeli x jest skończoną ujemną wartością, a y nie jest wartością całkowitą. Błąd dziedziny może także nastąpić, gdy x jest równe zero, a y jest liczbą niedodatnią.
Wartość zwracana Wartości odpowiednich funkcji zgodnie z opisem powyżej.
Ponadto, jeżeli wystąpi nadmiar funkcja zwraca w wyniku HUGE_VAL z odpowiednim znakiem i ustawia wartość zmiennej errno na ERANGE. Jeśli wystąpi niedomiar funkcja w wyniku zwraca zero, a to czy do zmiennej errno zostanie zapisana wartość ERANGE zależy od implementacji.
Przykład użycia #include
//... // obliczanie przeciwprostokątnej c trójkąta prostokątnego a,b,c
double a, b, temp; //przyprostokątne trójkąta double c; //przeciwprostokątna temp= pow(a,2) + pow(b,2); c= sqrt(temp);
// gcc c.c -lm #include #include // -lm
int main() { // pek = p*10^k = p*pow(10.0, k) printf("%f\n", pow(10.0, 3)); printf("%f\n", 1e3);
return 0; }
wynik:
1000.000000 1000.000000
Uwagi Wersje funkcji z przyrostkiem "f" i "l" (tzn. wersje operujące na zmiennych typu float i long double) zostały wprowadzone dopiero w standardzie C99. Również funkcje hypot oraz cbrt zostały wprowadzone dopiero w standardzie C99.
W przypadku użycia funkcji matematycznych może zaistnieć konieczność podania odpowiedniego argumentu linkerowi, aby ten połączył program z biblioteką matematyczną. Np. na systemach GNU/Linux jest to -lm.
Zobacz też abs (dla liczb całkowitych)