std::pow în C++

Ridică un număr la o putere: baza la exponent. Exponentul poate fi și negativ sau cu zecimale.

Sintaxă
double pow(double baza, double exponent);

Ce face std::pow

std::pow(b, e) calculează be. Exponentul negativ înseamnă inversul (pow(2, -1) = 0.5), iar exponentul fracționar înseamnă rădăcină (pow(8, 1.0/3) = 2).

Rezultatul este întotdeauna cu virgulă, chiar dacă dai întregi. Pentru puteri întregi mici (pătrat, cub) este mai simplu și mai exact x * x. C++ nu are operator de ridicare la putere: ^ este SAU exclusiv pe biți.

Parametri

Parametru Descriere
baza Numărul ridicat la putere.
exponent Puterea.

Ce returnează

Rezultatul, ca double.

Exemple

Exemplul 1: Puteri diverse

#include <cmath>
#include <print>

int main() {
    std::println("2^10   = {}", std::pow(2, 10));
    std::println("2^-2   = {}", std::pow(2, -2));
    std::println("9^0.5  = {}", std::pow(9, 0.5));

    int baza = 2;
    int exponent = 3;
    std::println("baza ^ exponent (XOR) = {}", baza ^ exponent);
}

Rezultat

2^10   = 1024
2^-2   = 0.25
9^0.5  = 3
baza ^ exponent (XOR) = 1

Exemplul 2: Dobândă compusă

1000 de lei la 5% pe an, timp de 10 ani: 1000 · 1.0510.

#include <cmath>
#include <print>

int main() {
    double suma = 1000.0;
    double dobanda = 0.05;

    for (int ani : {1, 5, 10}) {
        std::println("După {:>2} ani: {:.2f} lei", ani, suma * std::pow(1 + dobanda, ani));
    }
}

Rezultat

După  1 ani: 1050.00 lei
După  5 ani: 1276.28 lei
După 10 ani: 1628.89 lei

Greșeli frecvente

  • Scrii 2^3 așteptând 8: rezultatul este 1 (SAU exclusiv pe biți). Clang avertizează pentru constante (-Wxor-used-as-pow), dar nu și pentru variabile, ca în exemplul de mai sus.
  • Pui rezultatul într-un int pentru valori mari: pow poate returna 999.9999… și conversia taie la 999. Rotunjește cu std::lround sau calculează cu întregi.
  • Ridici un număr negativ la o putere cu zecimale (pow(-8, 1.0/3)): rezultatul este NaN. Pentru rădăcina cubică folosește std::cbrt.

Comenzi înrudite

  • std::sqrt: Calculează rădăcina pătrată (sqrt) sau rădăcina cubică (cbrt) a unui număr.
  • std::exp: Calculează e la puterea x, unde e ≈ 2,71828 este baza logaritmului natural.
  • std::log: Calculează logaritmul natural (log), în baza 10 (log10) sau în baza 2 (log2) al unui număr pozitiv.