pow, powf, powl
|
Défini dans l'en-tête
<math.h>
|
||
|
float
powf
(
float
base,
float
exponent
)
;
|
(1) | (depuis C99) |
|
double
pow
(
double
base,
double
exponent
)
;
|
(2) | |
|
long
double
powl
(
long
double
base,
long
double
exponent
)
;
|
(3) | (depuis C99) |
|
Défini dans l'en-tête
<tgmath.h>
|
||
|
#define pow( base, exponent )
|
(4) | (depuis C99) |
powl
est appelé. Sinon, si un argument a un type entier ou le type
double
,
pow
est appelé. Sinon,
powf
est appelé. Si au moins un argument est complexe ou imaginaire, alors la macro appelle la fonction complexe correspondante (
cpowf
,
cpow
,
cpowl
).
Table des matières |
Paramètres
| base | - | base comme valeur flottante |
| exponent | - | exposant comme valeur flottante |
Valeur de retour
Si aucune erreur ne se produit,
base
élevé à la puissance de
exponent
(
base
exponent
) est renvoyé.
Si une erreur de domaine se produit, une valeur définie par l'implémentation est retournée (NaN là où supporté).
Si une erreur de pôle ou une erreur de plage due à un dépassement de capacité se produit,
±
HUGE_VAL
,
±HUGE_VALF
, ou
±HUGE_VALL
est renvoyé.
Si une erreur de plage se produit en raison d'un dépassement inférieur, le résultat correct (après arrondi) est retourné.
Gestion des erreurs
Les erreurs sont signalées comme spécifié dans
math_errhandling
.
Si base est fini et négatif et exponent est fini et non entier, une erreur de domaine se produit et une erreur de plage peut survenir.
Si base est zéro et exponent est zéro, une erreur de domaine peut survenir.
Si base est zéro et exponent est négatif, une erreur de domaine ou une erreur de pôle peut survenir.
Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559),
-
pow
(
+
0
, exponent
)
, où
exponent
est un entier impair négatif, retourne
+∞et lève FE_DIVBYZERO -
pow
(
-
0
, exponent
)
, où
exponent
est un entier impair négatif, retourne
-∞et déclenche FE_DIVBYZERO - pow ( ± 0 , exponent ) , où exponent est négatif, fini, et est un entier pair ou un non-entier, retourne +∞ et déclenche FE_DIVBYZERO
- pow ( ± 0 , - ∞ ) retourne +∞ et peut lever FE_DIVBYZERO (jusqu'à C23)
- pow ( + 0 , exponent ) , où exponent est un entier positif impair, renvoie +0
- pow ( - 0 , exponent ) , où exponent est un entier positif impair, retourne -0
- pow ( ± 0 , exponent ) , où exponent est un non-entier positif ou un entier pair positif, retourne +0
- pow ( - 1 , ±∞ ) renvoie 1
-
pow
(
+
1
, exponent
)
renvoie
1
pour tout
exponent
, même lorsque
exponent
est
NaN -
pow
(
base, ±
0
)
renvoie
1
pour toute
base
, même lorsque
base
est
NaN -
pow
(
base, exponent
)
retourne
NaNet lève FE_INVALID si base est finie et négative et exponent est fini et non entier. -
pow
(
base,
-
∞
)
retourne +∞ pour tout
|base|<1 -
pow
(
base,
-
∞
)
retourne +0 pour tout
|base|>1 -
pow
(
base,
+
∞
)
retourne +0 pour tout
|base|<1 -
pow
(
base,
+
∞
)
retourne +∞ pour tout
|base|>1 - pow ( - ∞, exposant ) retourne -0 si exposant est un entier impair négatif
- pow ( - ∞, exposant ) renvoie +0 si exposant est un non-entier négatif ou un entier pair négatif
- pow ( - ∞, exponent ) retourne -∞ si exponent est un entier positif impair
- pow ( - ∞, exponent ) renvoie +∞ si exponent est un non-entier positif ou un entier pair positif
- pow ( + ∞, exponent ) renvoie +0 pour tout exponent négatif
- pow ( + ∞, exponent ) renvoie +∞ pour tout exponent positif
- sauf indication contraire ci-dessus, si un argument est NaN, NaN est retourné.
Notes
Bien que
pow
ne puisse pas être utilisé pour obtenir une racine d'un nombre négatif,
cbrt
est fourni pour le cas courant où
exponent
est
1
/
3
.
Exemple
#include <errno.h> #include <fenv.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { // utilisation typique 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)); // valeurs spéciales 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)); // gestion des erreurs 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"); }
Sortie possible :
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
Références
- Norme C23 (ISO/CEI 9899:2024) :
-
- 7.12.7.5 Les fonctions pow
-
- 7.27 Mathématiques génériques de type <tgmath.h>
-
- F.10.4.5 Les fonctions pow (p: 524-525)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.12.7.4 Les fonctions pow (p : 248-249)
-
- 7.25 Mathématiques génériques de type <tgmath.h> (p : 373-375)
-
- F.10.4.4 Les fonctions pow (p : 524-525)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.12.7.4 Les fonctions pow (p: 248-249)
-
- 7.25 Mathématiques génériques de type <tgmath.h> (p: 373-375)
-
- F.10.4.4 Les fonctions pow (p: 524-525)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.12.7.4 Les fonctions pow (p : 229)
-
- 7.22 Mathématiques génériques de type <tgmath.h> (p : 335-337)
-
- F.9.4.4 Les fonctions pow (p : 461)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.5.5.1 La fonction pow
Voir aussi
|
(C99)
(C99)
|
calcule la racine carrée (
√
x
)
(fonction) |
|
(C99)
(C99)
(C99)
|
calcule la racine cubique (
3
√
x
)
(fonction) |
|
(C99)
(C99)
(C99)
|
calcule la racine carrée de la somme des carrés de deux nombres donnés (
√
x
2
+y 2 ) (fonction) |
|
(C99)
(C99)
(C99)
|
calcule la fonction puissance complexe
(fonction) |
|
Documentation C++
pour
pow
|
|