std::exp în C++

Calculează e la puterea x, unde e ≈ 2,71828 este baza logaritmului natural.

Sintaxă
double exp(double x);

Ce face std::exp

std::exp(x) returnează ex. Este inversul lui std::log: exp(log(x)) == x (în limita preciziei). Apare în creșteri și descreșteri exponențiale: populații, dobândă continuă, răcire, dezintegrare radioactivă.

Pentru valori mari ale lui x (peste aproximativ 709), rezultatul nu mai încape în double și devine inf.

Parametri

Parametru Descriere
x Exponentul.

Ce returnează

ex, ca double.

Exemple

Exemplul 1: Valori de bază

#include <cmath>
#include <print>

int main() {
    std::println("exp(0) = {}", std::exp(0.0));
    std::println("exp(1) = {:.6f}", std::exp(1.0));
    std::println("exp(-1) = {:.6f}", std::exp(-1.0));
    std::println("exp(log(5)) = {:.6f}", std::exp(std::log(5.0)));
    std::println("exp(1000) = {}", std::exp(1000.0));
}

Rezultat

exp(0) = 1
exp(1) = 2.718282
exp(-1) = 0.367879
exp(log(5)) = 5.000000
exp(1000) = inf

Exemplul 2: Răcirea unei cafele

Legea lui Newton: T(t) = Tcameră + (T0 − Tcameră) · e−k·t.

#include <cmath>
#include <print>

int main() {
    double camera = 22.0;
    double initial = 90.0;
    double k = 0.05;  // pe minut

    for (int minut : {0, 10, 20, 30}) {
        double t = camera + (initial - camera) * std::exp(-k * minut);
        std::println("După {:>2} min: {:.1f} °C", minut, t);
    }
}

Rezultat

După  0 min: 90.0 °C
După 10 min: 63.2 °C
După 20 min: 47.0 °C
După 30 min: 37.2 °C

Greșeli frecvente

  • Scrii std::pow(2.71828, x) în loc de std::exp(x): este mai lent și mai puțin precis.

Comenzi înrudite

  • std::log: Calculează logaritmul natural (log), în baza 10 (log10) sau în baza 2 (log2) al unui număr pozitiv.
  • std::pow: Ridică un număr la o putere: baza la exponent. Exponentul poate fi și negativ sau cu zecimale.
  • std::numbers::pi: Constanta π cu precizia maximă a tipului double, plus alte constante matematice: e, √2, ln 2, φ.