Namespaces
Variants

pow, powf, powl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
(C99)
pow
(C23)
(C23)
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definiert in Header <math.h>
float powf ( float base, float exponent ) ;
(1) (seit C99)
double pow ( double base, double exponent ) ;
(2)
long double powl ( long double base, long double exponent ) ;
(3) (seit C99)
Definiert in Header <tgmath.h>
#define pow( base, exponent )
(4) (seit C99)
1-3) Berechnet den Wert von base potenziert mit exponent .
4) Typgenerisches Makro: Wenn ein Argument den Typ long double hat, wird powl aufgerufen. Andernfalls, wenn ein Argument einen Ganzzahltyp oder den Typ double hat, wird pow aufgerufen. Andernfalls wird powf aufgerufen. Wenn mindestens ein Argument komplex oder imaginär ist, ruft das Makro die entsprechende komplexe Funktion auf ( cpowf , cpow , cpowl ).

Inhaltsverzeichnis

Parameter

base - Basis als Gleitkommawert
exponent - Exponent als Gleitkommawert

Rückgabewert

Wenn keine Fehler auftreten, base hoch exponent ( base exponent
) zurückgegeben wird.

Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert zurückgegeben (NaN, sofern unterstützt).

Wenn ein Polfehler oder ein Bereichsfehler aufgrund von Überlauf auftritt, wird ± HUGE_VAL , ±HUGE_VALF , oder ±HUGE_VALL zurückgegeben.

Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.

Fehlerbehandlung

Fehler werden gemeldet, wie in math_errhandling spezifiziert.

Wenn base endlich und negativ ist und exponent endlich und nicht ganzzahlig ist, tritt ein Domänenfehler auf und ein Wertebereichsfehler kann auftreten.

Wenn base null ist und exponent null ist, kann ein Definitionsbereichsfehler auftreten.

Wenn base null ist und exponent negativ ist, kann ein Definitionsfehler oder ein Polfehler auftreten.

Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,

  • pow ( + 0 , exponent ) , wobei exponent eine negative ungerade Ganzzahl ist, gibt +∞ zurück und löst FE_DIVBYZERO aus
  • pow ( - 0 , exponent ) , wobei exponent eine negative ungerade Ganzzahl ist, gibt -∞ zurück und löst FE_DIVBYZERO aus
  • pow ( ± 0 , exponent ) , wobei exponent negativ, endlich und eine gerade ganze Zahl oder eine Nicht-Ganzzahl ist, gibt +∞ zurück und löst FE_DIVBYZERO aus
  • pow ( ± 0 , - ) gibt +∞ zurück und kann FE_DIVBYZERO auslösen (bis C23)
  • pow ( + 0 , exponent ) , wobei exponent eine positive ungerade ganze Zahl ist, gibt +0 zurück
  • pow ( - 0 , exponent ) , wobei exponent eine positive ungerade ganze Zahl ist, gibt -0 zurück
  • pow ( ± 0 , exponent ) , wobei exponent eine positive nicht-ganzzahlige Zahl oder eine positive gerade ganze Zahl ist, gibt +0 zurück
  • pow ( - 1 , ±∞ ) liefert 1
  • pow ( + 1 , exponent ) liefert 1 für jeden exponent , selbst wenn exponent NaN ist
  • pow ( base, ± 0 ) liefert 1 für jede beliebige base , selbst wenn base NaN ist
  • pow ( base, exponent ) gibt NaN zurück und löst FE_INVALID aus, wenn base endlich und negativ ist und exponent endlich und nicht ganzzahlig ist.
  • pow ( base, - ) liefert +∞ für jedes |base|<1
  • pow ( base, - ) liefert +0 für jedes |base|>1
  • pow ( base, + ) liefert +0 für jedes |base|<1
  • pow ( base, + ) liefert +∞ für jedes |base|>1
  • pow ( - ∞, exponent ) gibt -0 zurück, wenn exponent eine negative ungerade ganze Zahl ist
  • pow ( - ∞, exponent ) gibt +0 zurück, wenn exponent eine negative Nicht-Ganzzahl oder negative gerade Ganzzahl ist
  • pow ( - ∞, exponent ) gibt -∞ zurück, wenn exponent eine positive ungerade Ganzzahl ist
  • pow ( - ∞, exponent ) liefert +∞ zurück, wenn exponent eine positive nicht-ganzzahlige Zahl oder eine positive gerade ganze Zahl ist
  • pow ( + ∞, exponent ) gibt +0 für jeden negativen exponent zurück
  • pow ( + ∞, exponent ) gibt +∞ für jeden positiven exponent
  • außer wo oben angegeben, wenn ein Argument NaN ist, wird NaN zurückgegeben.

Hinweise

Obwohl pow nicht verwendet werden kann, um eine Wurzel einer negativen Zahl zu erhalten, cbrt wird für den häufigen Fall bereitgestellt, in dem exponent gleich 1 / 3 ist.

Beispiel

#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
int main(void)
{
    // typische Verwendung
    printf("pow(2, 10) = %f\n", pow(2, 10));
    printf("pow(2, 0.5) = %f\n", pow(2, 0.5));
    printf("pow(-2, -3) = %f\n", pow(-2, -3));
    // spezielle Werte
    printf("pow(-1, NAN) = %f\n", pow(-1, NAN));
    printf("pow(+1, NAN) = %f\n", pow(+1, NAN));
    printf("pow(INFINITY, 2) = %f\n", pow(INFINITY, 2));
    printf("pow(INFINITY, -1) = %f\n", pow(INFINITY, -1));
    // Fehlerbehandlung
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("pow(-1, 1/3) = %f\n", pow(-1, 1.0 / 3));
    if (errno == EDOM)
        perror("    errno == EDOM");
    if (fetestexcept(FE_INVALID))
        puts("    FE_INVALID raised");
    feclearexcept(FE_ALL_EXCEPT);
    printf("pow(-0, -3) = %f\n", pow(-0.0, -3));
    if (fetestexcept(FE_DIVBYZERO))
        puts("    FE_DIVBYZERO raised");
}

Mögliche Ausgabe:

pow(2, 10) = 1024.000000
pow(2, 0.5) = 1.414214
pow(-2, -3) = -0.125000
pow(-1, NAN) = nan
pow(+1, NAN) = 1.000000
pow(INFINITY, 2) = inf
pow(INFINITY, -1) = 0.000000
pow(-1, 1/3) = -nan
    errno == EDOM: Numerical argument out of domain
    FE_INVALID raised
pow(-0, -3) = -inf
    FE_DIVBYZERO raised

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.7.5 Die pow-Funktionen
  • 7.27 Typgenerische Mathematik <tgmath.h>
  • F.10.4.5 Die pow-Funktionen (S. 524-525)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.7.4 Die pow-Funktionen (S. 248-249)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.4.4 Die pow-Funktionen (S. 524-525)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.7.4 Die pow-Funktionen (S. 248-249)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.4.4 Die pow-Funktionen (S. 524-525)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.7.4 Die pow-Funktionen (S. 229)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S. 335-337)
  • F.9.4.4 Die pow-Funktionen (S. 461)
  • C89/C90 Standard (ISO/IEC 9899:1990):
  • 4.5.5.1 Die pow-Funktion

Siehe auch

(C99) (C99)
berechnet Quadratwurzel ( x )
(Funktion)
(C99) (C99) (C99)
berechnet Kubikwurzel ( 3 x )
(Funktion)
(C99) (C99) (C99)
berechnet Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen ( x 2
+y 2
)
(Funktion)
(C99) (C99) (C99)
berechnet die komplexe Potenzfunktion
(Funktion)