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