ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

awk でπを計算

本当は sed で計算したかったけど、sed で四則演算する方法が思いつかなかったので、
代わりに awk で。どこかで拾ってきたコードを移植したらそのまま動いたので面白みがない……

#!/usr/bin/awk -f

BEGIN {
	main();
}

function main() {
	LEN = 2800;
	UNIT = 10000;

	for( i = 0; i < LEN; i++ )
		f[i] = UNIT / 5;
	f[LEN] = 0;

	e = 0;
	for( c = LEN; c > 0; c -= 14) {
		d = 0;
		for( i = c; i > 0; i-- ) {
			d = d * i + f[i] * UNIT;
			g = i * 2 - 1;
			f[i] = d % g;
			d = int(d / g);
		}
		e = e * UNIT + d;
		d = int(e / UNIT);
		e = e % UNIT;
		printf( "%.4d", d ); fflush();
	}
	printf("\n");
}