Implementé la serie Madhava-Leibniz para calcular pi en Python, y luego en Cython para mejorar la velocidad. La versión de Python:Los cálculos de Cython son incorrectos
from __future__ import division
pi = 0
l = 1
x = True
while True:
if x:
pi += 4/l
else:
pi -= 4/l
x = not x
l += 2
print str(pi)
la versión Cython:
cdef float pi = 0.0
cdef float l = 1.0
cdef unsigned short x = True
while True:
if x:
pi += 4.0/l
else:
pi -= 4.0/l
x = not x
l += 2
print str(pi)
Cuando se detuvo la versión de Python que se había calculado correctamente pi a 3.141592. La versión de Cython finalmente terminó en 3.141597 con algunos dígitos más que no recuerdo (mi terminal se bloqueó) pero eran incorrectos. ¿Por qué los cálculos de la versión Cython son incorrectos?