Zaimplementowałem serię Madhava-Leibniz, aby obliczyć pi w Pythonie, a następnie w Cython, aby poprawić prędkość. Wersja Python:Obliczenia w języku Cython są niepoprawne
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)
wersja 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)
Kiedy zatrzymał wersji Pythona to było poprawnie obliczoną PI 3.141592. Wersja Cythona ostatecznie zakończyła się 3.141597 z kilkoma dodatkowymi cyframi, których nie pamiętam (mój terminal się zawiesił), ale były niepoprawne. Dlaczego obliczenia wersji Cythona są nieprawidłowe?