Os cálculos do Cython estão incorretos
Eu implementei a série Madhava – Leibniz para calcular pi em Python e, em seguida, em Cython para melhorar a velocidade. A versão do Python:
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)
A versão do 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)
Quando parei a versão do Python, ele calculou corretamente o pi para 3,141592. A versão do Cython acabou em 3.141597 com mais alguns dígitos que não me lembro (meu terminal travou), mas estavam incorretos. Por que os cálculos da versão do Cython estão incorretos?