Я реализовал серию Мадхава – Лейбница для вычисления числа пи в 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, он правильно вычислил pi до 3.141592.Версия Cython в итоге оказалась на 3.141597 с еще несколькими цифрами, которые я не помню (мой терминал потерпел крах), но были неверными.Почему расчеты версии Cython неверны?