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?