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?

questionAnswers(3)

yourAnswerToTheQuestion