正規分布の近似(14)

例えば、0.2142857142857という小数を考える。
この逆数を取ると、4.6666666666667、
小数部分を取ると、0.6666666666667、
この逆数を取ると、1.5、
小数部分を取ると、0.5、
この逆数を取ると、2、
小数部分を取ると、0
この手順を逆に辿っていくと分数になる。


分数(正確には有理数)はこの手順を踏むと必ず0になる。
なぜなら、元の分数をm/n(0<m<n)とすると、
逆数を取って、n/m、
小数部分を取ると、(n-am)/m、
ここで、aは0<=n-am<mとなる整数。
だから、分子は1手順ごとに確実に小さくなり、
最後には0になる。


元の小数をxとして、
[x]をxを超えない最大の整数とすると、

x0 = x
ak = [1/xk]
xk+1 = 1/xk - ak

とすると、
いつかxk = 0となるので、それを
xn = 0
とする。

xn-1 = 1/an-1
xn-2 = 1/(an-2)+xn-1)=1/(an-2+1/an-1)
x = 1/(a0+1/(a1+...+1/an-1)...))

という具合に連分数になる。
これをプログラムに組み込むと、

p10,0 = 1/362880x^9
p10,1 = 1/36288-1/4032x+1/1008x^2-1/432x^3+1/288x^4-1/288x^5+1/432x^6-1/1008x^7+1/4032x^8-1/40320x^9
p10,2 = -329/5184+1151/4032x-575/1008x^2+287/432x^3-143/288x^4+71/288x^5-35/432x^6+17/1008x^7-1/504x^8+1/10080x^9
p10,3 = 594894554/92296621-11083/576x+3667/144x^2-8461/432x^3+2773/288x^4-901/288x^5+289/432x^6-13/144x^7+1/144x^8-1/4320x^9
p10,4 = -10528321712/72480031+185525/576x-45485/144x^2+77555/432x^3-18731/288x^4+4475/288x^5-1055/432x^6+35/144x^7-1/72x^8+1/2880x^9
p10,5 = 2035710439/1680907-1220725/576x+235765/144x^2-316195/432x^3+60019/288x^4-11275/288x^5+2095/432x^6-55/144x^7+5/288x^8-1/2880x^9
p10,6 = -167683997/36288+3818123/576x-604043/144x^2+663581/432x^3-103
277/288x^4+15941/288x^5-2441/432x^6+53/144x^7-1/72x^8+1/4320x^9
p10,7 = 57008238/6535-6064393/576x+807745/144x^2-748207/432x^3+98407/288x^4-12871/288x^5+1675/432x^6-31/144x^7+1/144x^8-1/10080x^9
p10,8 = -8651564237/1092295+33046721/4032x-3782969/1008x^2+431441/432x^3-49049/288x^4+5561/288x^5-629/432x^6+71/1008x^7-1/504x^8+1/40320x^9
p10,9 = 1562500/567-156250/63x+62500/63x^2-6250/27x^3+625/18x^4-125/36x^5+25/108x^6-5/504x^7+1/4032x^8-1/362880x^9

これあってるのかな?
できれば分数クラスを作りたいが、
あれもオーバーフローしやすいから。