Python で pi を計算するために Madhava–Leibniz 級数を実装し、次に速度を向上させるために 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 バージョンの計算が正しくないのはなぜですか?