В C ++ в результате мощно (0, 0) результат в основном определяется реализация поведения , поскольку математически мы имеем противоречивую ситуацию , в которой N^0
всегда должно быть , 1
но 0^N
всегда должно быть 0
на N > 0
, так что вы не должны иметь никаких ожиданий математически в результате этого либо. Эти сообщения на форуме Wolfram Alpha содержат более подробную информацию.
Хотя pow(0,0)
результат 1
полезен для многих приложений, так как в Обосновании международного стандарта - Языки программирования - C говорится в разделе, посвященном поддержке арифметики с плавающей запятой МЭК 60559 :
Как правило, C99 избегает результата NaN, когда полезно числовое значение. [...] Результаты pow (∞, 0) и pow (0,0) равны 1, потому что есть приложения, которые могут использовать это определение. Например, если x (p) и y (p) - любые аналитические функции, которые становятся равными нулю при p = a, то pow (x, y), что равно exp (y * log (x)), приближается к 1, когда p приближается а.
Обновить C ++
Как leemes правильно указал , что я изначально связанно с ссылкой на комплексную версию мощна в то время как несложная версию утверждает , что это ошибка домена проекта стандарта C ++ возвращается к проекту стандарта C и как С99 и С11 в разделе 7.12.7.4
военнопленной функции пункт 2 говорит ( выделено мной ):
[...] Ошибка домена может возникнуть, если x равен нулю, а y равен нулю. [...]
что, насколько я могу судить, означает, что это поведение является неопределенным. Перемотка назад битового раздела 7.12.1
Обработка условий ошибки говорит:
[...] ошибка домена возникает, если входной аргумент находится за пределами домена, в котором определена математическая функция. [...] При ошибке домена функция возвращает значение, определяемое реализацией; если целочисленное выражение math_errhandling & MATH_ERRNO не равно нулю, целочисленное выражение errno получает значение EDOM; [...]
Так что если была ошибка домена , то это будет реализация определяется поведение , но в обоих последних версиях gcc
и clang
стоимости errno
является 0
так это не ошибка домена для этих компиляторов.
Обновить Javascript
Для Javascript в спецификации языка ECMAScript® в разделе 15.8
«Математический объект» под 15.8.2.13
pow (x, y) среди других условий говорится, что:
Если y равно +0, результат равен 1, даже если x равен NaN.