Continued fraction: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring, marked p2js compatible) |
(add lambdatalk code) |
||
Line 1,901: | Line 1,901: | ||
pi = 3.141592622804847 |
pi = 3.141592622804847 |
||
</pre> |
</pre> |
||
=={{header|Lambdatalk}}== |
|||
<lang Scheme> |
|||
{def gcf |
|||
{def gcf.rec |
|||
{lambda {:f :n :r} |
|||
{if {< :n 1} |
|||
then {+ {car {:f 0}} :r} |
|||
else {gcf.rec :f |
|||
{- :n 1} |
|||
{let { {:r :r} |
|||
{:ab {:f :n}} |
|||
} {/ {cdr :ab} |
|||
{+ {car :ab} :r}} }}}}} |
|||
{lambda {:f :n} |
|||
{gcf.rec :f :n 0}}} |
|||
{def phi |
|||
{lambda {:n} |
|||
{cons 1 1}}} |
|||
{gcf phi 50} |
|||
-> 1.618033988749895 |
|||
{def sqrt2 |
|||
{lambda {:n} |
|||
{cons {if {> :n 0} then 2 else 1} 1}}} |
|||
{gcf sqrt2 25} |
|||
-> 1.4142135623730951 |
|||
{def napier |
|||
{lambda {:n} |
|||
{cons {if {> :n 0} then :n else 2} {if {> :n 1} then {- :n 1} else 1} }}} |
|||
{gcf napier 20} |
|||
-> 2.7182818284590455 |
|||
{def fpi |
|||
{lambda {:n} |
|||
{cons {if {> :n 0} then 6 else 3} {pow {- {* 2 :n} 1} 2} }}} |
|||
{gcf fpi 500} |
|||
-> 3.1415926 516017554 |
|||
// only 8 exact decimals for 500 iterations |
|||
// A very very slow convergence. |
|||
// Here is a quicker version without any obvious pattern |
|||
{def pi |
|||
{lambda {:n} |
|||
{cons {A.get :n {A.new 3 7 15 1 292 1 1 1 2 1 3 1 14 2 1 1}} 1}}} |
|||
{gcf pi 15} |
|||
-> 3.1415926 53589793 |
|||
// Much quicker, 15 exact decimals after 15 iterations |
|||
</lang> |
|||
=={{header|Lua}}== |
=={{header|Lua}}== |