Arithmetic-geometric mean: Difference between revisions

Content added Content deleted
(Add TI SR-56 solution)
(→‎{{header|Lambdatalk}}: adding lambdatalk task)
Line 1,546: Line 1,546:
0.8472130847939792
0.8472130847939792
</pre>
</pre>

=={{header|Lambdatalk}}==
<syntaxhighlight lang="Scheme">
{def agm
{def agm.r
{lambda {:an :gn :tol}
{if {> {abs {- :an :gn}} :tol}
then {agm.r {/ {+ :an :gn} 2} {sqrt {* :an :gn}} :tol}
else :an }}}
{lambda {:a0 :g0}
{agm.r {/ {+ :a0 :g0} 2} {sqrt {* :a0 :g0}} 1e-15}}}
-> agm

{agm 1 {/ 1 {sqrt 2}}}
-> 0.8472130847939792

Using the lib_BN library we compute 70 digits

{def AGM
{def AGM.r
{lambda {:an :gn :tol}
{if {= {BN.compare {BN.abs {BN.- :an :gn}} :tol} 1}
then {AGM.r {BN./ {BN.+ :an :gn} 2}
{BN.sqrt {BN.* :an :gn}}
:tol}
else :an }}}
{lambda {:a0 :g0}
{AGM.r {BN./ {BN.+ :a0 :g0} 2}
{BN.sqrt {BN.* :a0 :g0}}
{BN./ 1 {BN.pow 10 45}}}}}
-> AGM

{BN.DEC 70}
-> 70 digits

{AGM 1 {BN./ 1 {BN.sqrt 2}}}
-> 0.8472130847939790866064991234821916364814459103269421850605793726597339
</syntaxhighlight>



=={{header|LFE}}==
=={{header|LFE}}==