オイラー定数を計算してみた

30分プログラム、その655。オイラー定数を計算してみました。
京都に旅行に行ってきました! 旅行中に、ふらふらっとジュンク堂に入ったらオイラー定数1000000桁表が置いてあったので、つい買ってしまいました。
で、せっかく買ったので、オイラー定数を計算してみました。
式は、\gamma=\sum^\infty_{n=1}(\frac{1}{n}-\ln\frac{n+1}{n})を使っています。
計算をやめるタイミングが悪いせいだと思うんですが、あんまり精度はよくありません。ただ、結果の確認にオイラー定数表が使えたので満足です。

使い方

$ python euler.py
0.577208593849

ソースコード

#! /usr/bin/python
# -*- mode:python; coding:utf-8 -*-
#
# euler.py -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/09/07 20:56:44
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#
from math      import log
from itertools import count

def term(n):
    return (1/n-log((n+1)/n))

def euler(diff=1e-10):
    r = 0
    for i in count(1):
        d =  term(float(i))
        if d < diff:
            return r
        else:
            r += d

print euler()