math.h (sqrt, pow, fabs…) în C

Funcțiile matematice ale limbajului C: radical, putere, valoare absolută, logaritmi și trigonometrie, pe numere double.

Sintaxă
#include <math.h>
double sqrt(double x);   double pow(double baza, double exp);
double fabs(double x);   double hypot(double x, double y);
double exp(double x);    double log(double x);   double log10(double x);
double sin(double x);    double cos(double x);   double atan2(double y, double x);

Ce face math.h (sqrt, pow, fabs...)

Funcțiile din math.h lucrează cu double. Fiecare are variante pentru float (sufix f: sqrtf) și long double (sufix l: sqrtl). Pe Linux, la compilare cu gcc adaugi de obicei -lm, ca programul să fie legat de biblioteca matematică.

sqrt radicalul, pow(b, e) puterea, fabs valoarea absolută pentru numere reale (abs din stdlib.h este pentru int), hypot(x, y) ipotenuza, exp/log/log10 exponențiala și logaritmii. Funcțiile trigonometrice primesc unghiul în radiani.

Pentru argumente invalide (sqrt(-1), log(0)) funcțiile întorc valori speciale: NaN („not a number”) sau infinit, pe care le testezi cu isnan și isinf. Constanta M_PI nu face parte din standardul C (o oferă POSIX); un mod portabil este acos(-1.0).

Parametri

Parametru Descriere
x, y, baza, exp Valori double; unghiurile sunt în radiani.

Ce returnează

Rezultatul ca double, sau NaN/infinit pentru argumente în afara domeniului.

Exemple

Exemplul 1: Distanța dintre două puncte

#include <math.h>
#include <stdio.h>

int main(void) {
    double x1 = 1, y1 = 2, x2 = 4, y2 = 6;
    double d1 = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
    double d2 = hypot(x2 - x1, y2 - y1);
    printf("distanța: %.2f (cu hypot: %.2f)\n", d1, d2);
    return 0;
}

Rezultat

distanța: 5.00 (cu hypot: 5.00)

Exemplul 2: Dobânda compusă

1000 lei depuși 5 ani cu o dobândă de 6% pe an: suma * (1 + r)ani.

#include <math.h>
#include <stdio.h>

int main(void) {
    double depus = 1000.0, dobanda = 0.06;
    for (int ani = 1; ani <= 5; ani++) {
        printf("după %d ani: %.2f lei\n", ani, depus * pow(1 + dobanda, ani));
    }
    return 0;
}

Rezultat

după 1 ani: 1060.00 lei
după 2 ani: 1123.60 lei
după 3 ani: 1191.02 lei
după 4 ani: 1262.48 lei
după 5 ani: 1338.23 lei

Exemplul 3: Valori speciale și trigonometrie

#include <math.h>
#include <stdio.h>

int main(void) {
    const double pi = acos(-1.0);
    printf("pi = %.6f\n", pi);
    printf("sin(30°) = %.2f\n", sin(30 * pi / 180));
    printf("fabs(-7.5) = %.1f\n", fabs(-7.5));
    printf("log10(1000) = %.0f\n", log10(1000));
    double r = sqrt(-1.0);
    printf("sqrt(-1) este NaN? %s\n", isnan(r) ? "da" : "nu");
    printf("log(0) este infinit? %s\n", isinf(log(0.0)) ? "da" : "nu");
    return 0;
}

Rezultat

pi = 3.141593
sin(30°) = 0.50
fabs(-7.5) = 7.5
log10(1000) = 3
sqrt(-1) este NaN? da
log(0) este infinit? da

Greșeli frecvente

  • Folosești ^ pentru putere: în C, 2 ^ 3 este SAU exclusiv pe biți și dă 1. Pentru putere folosești pow sau înmulțiri.
  • Dai unghiul în grade lui sin/cos. Înmulțește cu π/180.
  • Folosești abs pe un double: valoarea este convertită la int și pierzi zecimalele. Pentru numere reale folosește fabs.
  • Pe Linux primești eroarea undefined reference to `sqrt' la link-are: adaugă -lm la sfârșitul comenzii gcc.

Comenzi înrudite

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: math.h (sqrt, pow, fabs…)

Ai o nelămurire despre utilizarea comenzii math.h (sqrt, pow, fabs…) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.