¿Por qué no salta un Underflow o algo así?

Me sorprendió esto:

>>> 10 ** -1000
0.0

Esperaba tener un UnderflowError o algo similar.

Parecido a lo que salta al hacer:

>>> 10 ** 1000 + .1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: int too large to convert to float

¿Alguien tiene idea por qué no sucede eso?

Parece ser lo que recomienda el standard: https://en.wikipedia.org/wiki/IEEE_754#Exception_handling se marca la señal pero se devuelve un número subnormal o 0.

Por otro lado si necesitás eso tenés dos cosas: https://docs.python.org/3.6/library/fpectl.html#module-fpectl debería permitirte habilitar esa excepción manualmente, pero no está recomendada.

La opción recomendada es usar decimal, que incluye un marcador de Subnormal.

Como nota, C tiene el mismo comportamiento: https://www.ideone.com/MFAdAC, básicamente, “Sí, pibe, es 0, no me jodas”, y siendo que Cython es el interprete de facto, tiene sentido que se comporten igual.