円周率

つくば記念に。


ガウスルジャンドルアルゴリズム

static double Pi(int count) {
	double a = 1;
	double b = Math.Sqrt( 1 / 2.0 );
	double t = 1 / 4.0;
	double p = 1;

	for ( int i = 0; i < count; i++ ) {
		double x = (a + b) / 2.0;
		double y = Math.Sqrt( a * b );
		t = t - p * Math.Pow( x - a, 2 );

		a = x;
		b = y;
		p *= 2;
	}
	return Math.Pow( a + b, 2 ) / (4 * t) ;
}

結局は Math.PI なんですけど。