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}}==