C/pow

< C
(Przekierowano z C/cbrt)

Deklaracja

edytuj
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

edytuj

math.h

Argumenty

edytuj
x, y
argumenty funkcji

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

edytuj

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

edytuj
#include<math.h> 

  //...
  // 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 <stdio.h>
#include <math.h> // -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   

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ż

edytuj
abs (dla liczb całkowitych)