pow, powf, powl
| 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) |
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
NaNist - pow(base, ±0) gibt 1 für jede base zurück, auch wenn base
NaNist - pow(base, exponent) gibt
NaNzurü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|<1zurück - pow(base, -∞) gibt +0 für jedes
|base|>1zurück - pow(base, +∞) gibt +0 für jedes
|base|<1zurück - pow(base, +∞) gibt +∞ für jedes
|base|>1zurü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
NaNzurü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) |
| (C99)(C99)(C99) |
berechnet die Kubikwurzel (3√x) (Funktion) |
| (C99)(C99)(C99) |
berechnet die Quadratwurzel der Summe der Quadrate zweier gegebener Zahlen (√x2 +y2 ) (Funktion) |
| (C99)(C99)(C99) |
berechnet die komplexe Potenzfunktion (Funktion) |
| C++-Dokumentation für pow
| |