Расчеты Cython неверны

Я реализовал серию Мадхавы – Лейбница для вычисления числа пи в Python, а затем в Cython для повышения скорости. Версия 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)

Версия 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)

Когда я остановил версию Python, она правильно вычислила число Пи до 3,141592. Версия Cython в конечном итоге оказалась на 3.141597 с еще несколькими цифрами, которые я не помню (мой терминал разбился), но были неправильными. Почему вычисления версии Cython неверны?

7
задан None 19 January 2011 в 01:30
поделиться