Namensräume
Varianten
Aktionen

pow, powf, powl

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
pow
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
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 hoch dem Exponenten exponent.
4) Typgenerische Makro: Wenn ein Argument vom Typ long double ist, 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).

Inhalt

[edit] Parameter

base - Basis als Gleitkommazahl
Exponent - Exponent als Gleitkommazahl

[edit] Rückgabewert

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

Wenn ein Domänenfehler auftritt, wird ein implementierungsabhängiger Wert zurückgegeben (NaN, wo 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 eines Unterlaufs auftritt, wird das korrekte Ergebnis (nach Rundung) zurückgegeben.

[edit] Fehlerbehandlung

Fehler werden wie in math_errhandling angegeben gemeldet.

Wenn base endlich und negativ ist und exponent endlich und nicht ganzzahlig ist, tritt ein Domänenfehler auf und möglicherweise ein Bereichsfehler.

Wenn base Null ist und exponent Null ist, kann ein Domänenfehler auftreten.

Wenn base Null ist und exponent negativ ist, kann ein Domänenfehler oder ein Polfehler auftreten.

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

  • pow(+0, exponent), wobei exponent eine negative ungerade ganze Zahl ist, gibt +∞ zurück und löst FE_DIVBYZERO aus
  • pow(-0, exponent), wobei exponent eine negative ungerade ganze Zahl ist, gibt -∞ zurück und löst FE_DIVBYZERO aus
  • pow(±0, exponent), wobei exponent negativ, endlich und eine gerade ganze Zahl oder nicht ganzzahlig 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 oder eine positive gerade ganze Zahl ist, gibt +0 zurück
  • pow(-1, ±∞) gibt 1 zurück
  • pow(+1, exponent) gibt 1 für jeden exponent zurück, auch wenn exponent NaN ist
  • pow(base, ±0) gibt 1 für jede base zurück, auch 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, -) gibt +∞ für jedes |base|<1 zurück
  • pow(base, -) gibt +0 für jedes |base|>1 zurück
  • pow(base, +) gibt +0 für jedes |base|<1 zurück
  • pow(base, +) gibt +∞ für jedes |base|>1 zurück
  • 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-ganzzahlige oder negative gerade ganze Zahl ist
  • pow(-∞, exponent) gibt -∞ zurück, wenn exponent eine positive ungerade ganze Zahl ist
  • pow(-∞, exponent) gibt +∞ zurück, wenn exponent eine positive nicht-ganzzahlige oder positive gerade ganze Zahl ist
  • pow(+∞, exponent) gibt +0 für jeden negativen exponent zurück
  • pow(+∞, exponent) gibt +∞ für jeden positiven exponent zurück
  • sofern nicht oben anders angegeben, gibt das Ergebnis NaN zurück, wenn eines der Argumente NaN ist.

[edit] Hinweise

Obwohl pow nicht verwendet werden kann, um die Wurzel einer negativen Zahl zu ziehen, ist cbrt für den häufigen Fall vorgesehen, dass der exponent 1 / 3 ist.

[edit] Beispiel

#include <errno.h>
#include <fenv.h>
#include <math.h>
#include <stdio.h>
// #pragma STDC FENV_ACCESS ON
 
int main(void)
{
    // typical usage
    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));
 
    // special values
    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));
 
    // error handling
    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

[edit] 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 Typ-generische 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 Typ-generische 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 Typ-generische 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

[edit] Siehe auch

(C99)(C99)
berechnet die Quadratwurzel (x)
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet die Kubikwurzel (3x)
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet die Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen (x2
+y2
)
(Funktion) [bearbeiten]
(C99)(C99)(C99)
berechnet die komplexe Potenzfunktion
(Funktion) [bearbeiten]