Есть ли разница в результатах, возвращаемых встроенным Python pow(x, y)
(без третьего аргумента), и значениях, возвращаемых math.pow()
, в случае двух аргументов с плавающей запятой.
Я задаю этот вопрос, потому что документация для math.pow()
подразумевает, что pow(x, y)
(т.е. x**y
) по существу совпадает с math.pow(x, y)
:
math.pow(x, y)
Верните x, возведенный в степень y. Исключительные случаи следуйте Приложению ‘F стандарта C99, насколько это возможно. В в частности, pow (1.0, x) и pow (x, 0.0) всегда возвращают 1.0, даже когда x это ноль или NaN. Если и x, и y конечны, то x отрицателен, а y не является целым числом, тогда pow (x, y) не определен и вызывает ValueError.
Изменено в версии 2.6: результат 1 ** nan и nan ** 0 не определен.
Обратите внимание на последнюю строку: документация подразумевает, что поведение math.pow()
соответствует поведению оператора возведения в степень **
(и, следовательно, pow(x, y)
). Это официально гарантировано?
Предыстория: Моя цель состоит в том, чтобы обеспечить реализацию как встроенного pow()
, так и math.pow()
для чисел с неопределенностью, которые ведут себя так же, как и с обычными числами Python (те же числовые результаты, те же исключения, те же результаты для угла случаи и т.д.). Я уже реализовал что-то, что работает достаточно хорошо, но есть некоторые angular случаи, которые нужно обработать