In C ++ Il risultato di pow (0, 0) il risultato è fondamentalmente un comportamento definito dall'implementazione poiché matematicamente abbiamo una situazione contraddittoria in cui N^0
dovrebbe essere sempre 1
ma 0^N
dovrebbe sempre essere 0
per N > 0
, quindi non dovresti avere aspettative matematicamente sul risultato di questo. Questo post del forum Wolfram Alpha fornisce maggiori dettagli.
Sebbene il pow(0,0)
risultato 1
sia utile per molte applicazioni, poiché il Rationale for International Standard — Programming Languages — C afferma nella sezione relativa al supporto aritmetico a virgola mobile IEC 60559 :
In genere, C99 evita un risultato NaN dove è utile un valore numerico. [...] I risultati di pow (∞, 0) e pow (0,0) sono entrambi 1, perché ci sono applicazioni che possono sfruttare questa definizione. Ad esempio, se x (p) e y (p) sono funzioni analitiche che diventano zero in p = a, allora pow (x, y), che è uguale a exp (y * log (x)), si avvicina a 1 quando p si avvicina un.
Aggiorna C ++
Come i leemes hanno correttamente sottolineato, originariamente mi collegavo al riferimento per la versione complessa di pow mentre la versione non complessa afferma che è un errore di dominio la bozza dello standard C ++ ricade sulla bozza dello standard C e sia C99 che C11 nella sezione 7.12.7.4
Il paragrafo funzioni pow 2 dice ( enfasi mia ):
[...] Può verificarsi un errore di dominio se x è zero ey è zero. [...]
che, per quanto posso dire mezzo questo comportamento è un comportamento non specificato di avvolgimento di una sezione po ' 7.12.1
Trattamento delle condizioni di errore dice:
[...] si verifica un errore di dominio se un argomento di input è esterno al dominio su cui è definita la funzione matematica [...] In un errore di dominio, la funzione restituisce un valore definito dall'implementazione; se l'espressione intera math_errhandling & MATH_ERRNO è diversa da zero, l'espressione intera errno acquisisce il valore EDOM; [...]
Quindi, se ci fosse un errore di dominio, questo sarebbe un comportamento definito dall'implementazione, ma sia nelle ultime versioni di gcc
che clang
nel valore di errno
è 0
quindi non è un errore di dominio per quei compilatori.
Aggiorna Javascript
Per Javascript, la specifica del linguaggio ECMAScript® nella sezione 15.8
The Math Object in 15.8.2.13
pow (x, y) dice tra le altre condizioni che:
Se y è +0, il risultato è 1, anche se x è NaN.