Документы Python не указывают явно atan2 (0, 0), но реализация CPython требует особых усилий для обеспечения того, чтобы особые случаи следовали C99, даже если базовая библиотека C этого не делает. Это включает в себя путь кода, который обрабатывает возвращение atan2 (0, 0) 0.0:
if (Py_IS_INFINITY(x) || y == 0.) {
if (copysign(1., x) == 1.)
/* atan2(+-y, +inf) = atan2(+-0, +x) = +-0. */
return copysign(0., y);
...
Как правило, функции, предоставляемые в модуле math
, которые соответствуют функциям стандартной библиотеки C, должны соответствовать стандартному поведению языка C. Для этого есть несколько общих утверждений, например, в верхней части документа:
Этот модуль всегда доступен. Он обеспечивает доступ к математическим функциям, определенным стандартом C.
и вот этот внизу:
Поведение в исключительных случаях соответствует Приложению F стандарта C99, где это необходимо.
хотя Приложение F не является частью стандарта, определяющего atan2.