У C ++ в результаті потужно (0, 0) результат в основному визначається реалізація поведінки , оскільки математично ми маємо суперечливу ситуацію , в якій N^0
завжди має бути , 1
але 0^N
завжди має бути 0
на N > 0
, так що ви не повинні мати ніяких очікувань математично в результаті цього або. У цьому повідомленні на форумі Wolfram Alpha йдеться трохи більше деталей.
Наявність pow(0,0)
результату в 1
корисно для багатьох додатків, оскільки обгрунтування міжнародного стандарту - Мови програмування - C говорить у розділі, що охоплює підтримку арифметики з плаваючою крапкою IEC 60559 :
Як правило, C99 уникає результату NaN, коли числове значення є корисним. [...] Результати pow (∞, 0) та pow (0,0) дорівнюють 1, оскільки існують програми, які можуть використовувати це визначення. Наприклад, якщо x (p) та y (p) - це будь-які аналітичні функції, які стають нулем при p = a, тоді pow (x, y), що дорівнює exp (y * log (x)), наближається до 1 із наближенням p a.
Оновіть 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
is, 0
це не є помилкою домену для цих компіляторів.
Оновіть Javascript
Для Javascript Специфікації ECMAScript® Мови в розділі 15.8
Математики Об'єкт під 15.8.2.13
потужному (х, у) говорить , що серед інших умов , що:
Якщо y дорівнює +0, результат дорівнює 1, навіть якщо x дорівнює NaN.