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^0dovrebbe essere sempre 1ma 0^Ndovrebbe sempre essere 0per 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 1sia 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 gccche clangnel valore di errnoè 0quindi 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.