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 destd::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, φ.