En C++, Le résultat de pow(0, 0) le résultat est essentiellement définie par l'implémentation de comportement car mathématiquement, nous avons une situation contradictoire où l' N^0
doit toujours être 1
mais 0^N
doit toujours être 0
pour N > 0
, de sorte que vous devriez ne pas avoir d'attentes mathématiquement à la suite de ce soit. Cette Wolfram Alpha messages du forum, va dans un peu plus de détails.
Bien qu'ayant pow(0,0)
résultat en 1
est utile pour de nombreuses applications comme la Justification de la Norme Internationale-Langages de Programmation-C - unis dans la section traitant de l'IEC 60559 l'arithmétique à virgule flottante de soutien:
Généralement, C99 évite NaN résultat où une valeur numérique est utile. [...] Les résultats de pow(∞,0) et pow(0,0) sont tous deux à 1, car il y a des applications qui peuvent exploiter cette définition. Par exemple, si x(p) et y(p) sont des fonctions analytiques qui deviennent de zéro à p = a, alors pow(x,y), qui est égal à exp(a*log(x)), les approches 1 que p s'approche d'un.
Mise À Jour De C++
Comme leemes souligné à juste titre j'ai d'abord lié à la référence pour le complexe de la version de pow tandis que le non-complexe de la version prétend que c'est du domaine de l'erreur de l' ébauche de la norme C++ retombe sur le projet de norme C et les deux C99 et C11 dans la section 7.12.7.4
Le pow fonctions de l'alinéa 2 dit: (c'est moi qui souligne):
[...]Une erreur de domaine peut se produire si x est égal à zéro et y est égal à zéro.[...]
qui, autant que je peux dire que signifie ce comportement est un comportement non spécifié enroulant un peu la section 7.12.1
Traitement de conditions d'erreur dit:
[...]une erreur de domaine se produit si un argument d'entrée est en dehors du domaine de plus de
dont la fonction mathématique est définie.[...] Sur un domaine d'erreur, la fonction renvoie une mise en valeur définie; si l'expression entière math_errhandling & MATH_ERRNO est différente de zéro, l'expression entière errno acquiert la valeur d'EDOM; [...]
Donc si il y avait une erreur de domaine alors ce serait mise en œuvre, les comportements définis , mais dans les deux dernières versions de l' gcc
et clang
la valeur de errno
est 0
il n'est donc pas une erreur de domaine de ces compilateurs.
Mise À Jour De Javascript
Pour le Javascript le ECMAScript® Spécification du Langage dans la section 15.8
L'Objet Math en vertu de l' 15.8.2.13
pow (x, y) est dit entre autres conditions que:
Si y est de +0, le résultat est 1, même si x est NaN.