#!/usr/bin/ruby
func continued_fraction(a, b, n=100) {
a.run + (n > 0 ? (b.run / continued_fraction(a, b, n-1)) : 0);
}
var f = Hash.new(
"√2" => [
do { var n = 0; { n++ ? 2 : 1 } },
{ 1 },
],
"e" => [
do { var n = 0; { n++ || 2 } },
do { var n = 0; { n++ || 1 } },
],
"π" => [
do { var n = 0; { n++ ? 6 : 3 } },
do { var n = 0; { (2*(n++) + 1)**2 } },
1_000,
],
"π/2" => [
do { var n = 0; { 1/(n++ || 1) } },
{ 1 },
1_000,
]
);
f.each { |k,v|
printf("%3s ≈ %.9f\n", k, continued_fraction(v...));
};