Continued fraction: Difference between revisions
→{{header|Common Lisp}}: add chapel
(→{{header|Common Lisp}}: add chapel) |
|||
Line 497:
napier's = 2.7182818284590464d0
pi = 3.141592653589543d0</pre>
=={{header|Chapel}}==
Functions don't take other functions as arguments, so I wrapped them in a dummy record each.
<lang chapel>proc calc(f, n) {
var r = 0.0;
for k in 1..n by -1 {
var v = f.pair(k);
r = v(2) / (v(1) + r);
}
return f.pair(0)(1) + r;
}
record Sqrt2 {
proc pair(n) {
return (if n == 0 then 1 else 2,
1);
}
}
record Napier {
proc pair(n) {
return (if n == 0 then 2 else n,
if n == 1 then 1 else n - 1);
}
}
record Pi {
proc pair(n) {
return (if n == 0 then 3 else 6,
(2*n - 1)**2);
}
}
config const n = 200;
writeln(calc(new Sqrt2(), n));
writeln(calc(new Napier(), n));
writeln(calc(new Pi(), n));</lang>
=={{header|D}}==
|