Em C ++ O resultado de pow (0, 0) , o resultado é basicamente implementação comportamento definido desde matematicamente temos uma situação contraditória em que N^0deve ser sempre 1, mas 0^Ndeve ser sempre 0para N > 0, então você não deve ter expectativas matematicamente quanto ao resultado deste quer. Esta postagem do fórum do Wolfram Alpha dá mais detalhes.
Embora ter pow(0,0)resultado em 1seja útil para muitas aplicações, como a justificativa para o padrão internacional - linguagens de programação - C afirma na seção que cobre o suporte aritmético de ponto flutuante IEC 60559 :
Geralmente, C99 evita um resultado NaN onde um valor numérico é útil. [...] Os resultados de pow (∞, 0) e pow (0,0) são ambos 1, porque existem aplicativos que podem explorar esta definição. Por exemplo, se x (p) e y (p) são quaisquer funções analíticas que se tornam zero em p = a, então pow (x, y), que é igual a exp (y * log (x)), se aproxima de 1 conforme p se aproxima uma.
Atualizar C ++
Como leemes corretamente apontou, eu originalmente vinculei à referência para a versão complexa de pow enquanto a versão não complexa afirma que é um erro de domínio, o esboço do padrão C ++ volta ao esboço do padrão C e ambos C99 e C11 na seção 7.12.7.4 O parágrafo das funções pow 2 diz ( ênfase minha ):
[...] Um erro de domínio Pode ocorrer se x for zero ey for zero. [...]
que, tanto quanto eu posso dizer meio deste comportamento é o comportamento não especificado liquidação de volta uma seção pouco7.12.1 Tratamento de condições de erro diz:
[...] um erro de domínio ocorre se um argumento de entrada está fora do domínio sobre o qual a função matemática é definida. [...] Em um erro de domínio, a função retorna um valor definido pela implementação; se a expressão inteira math_errhandling & MATH_ERRNO for diferente de zero, a expressão inteira errno adquire o valor EDOM; [...]
Portanto, se houvesse um erro de domínio , esse seria o comportamento definido pela implementação, mas em ambas as versões mais recentes de gcce clango valor de errnoé, 0portanto, não é um erro de domínio para esses compiladores.
Atualizar Javascript
Para Javascript, a Especificação da Linguagem ECMAScript® na seção 15.8 O Objeto Matemático sob 15.8.2.13 pow (x, y) diz, entre outras condições:
Se y for +0, o resultado será 1, mesmo se x for NaN.