Jump to content

Arithmetic-geometric mean: Difference between revisions

m
No edit summary
Line 1,549:
=={{header|Lambdatalk}}==
<syntaxhighlight lang="Scheme">
{def eps 1e-15}
-> eps
 
{def agm
{lambda {:a0a :g0g}
{def agm.r
{lambdaif {:an> {abs {- :gna :tolg}} {eps}}
{if then {>agm {abs/ {-+ :ana :gng} 2} :tol}
then {agm.r {/ {+ :an :gn} 2} {sqrt {* :ana :gng}} :tol}
else :ana }}}
{lambda {:a0 :g0}
{agm.r {/ {+ :a0 :g0} 2} {sqrt {* :a0 :g0}} 1e-15}}}
-> agm
 
Line 1,562 ⟶ 1,563:
-> 0.8472130847939792
 
UsingMulti-precision version using the lib_BN library we compute 70 digits
 
{BN.DEC 70}
-> 70 digits
{def EPS {BN./ 1 {BN.pow 10 45}}}}}
-> EPS
{def AGM
{lambda {:a0a :g0g}
{def AGM.r
{if {= {BN.compare {BN.abs {BN.- :a :g}} {EPS}} 1}
{lambda {:an :gn :tol}
{if {=then {BN.compareAGM {BN.abs/ {BN.-+ :an :gn}}a :tolg} 12}
then {AGM.r {BN./sqrt {BN.+* :ana :gng}} 2}
{BN.sqrt {BN.*else :ana :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}}==
99

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.