21 lines
567 B
Text
21 lines
567 B
Text
{def sweeney
|
|
{def sweeney.set!
|
|
{lambda {:s :r :k :i}
|
|
{A.set! :i {+ {A.get :i :s} {/ :r :k}} :s}
|
|
}}
|
|
{def sweeney.loop
|
|
{lambda {:n :s :r :k}
|
|
{if {<= :r 1.e-10}
|
|
then gamma = {- {A.get 1 :s} {A.get 0 :s} {log :n}} with k=:k
|
|
else {sweeney.loop :n
|
|
{sweeney.set! :s {* :r {/ :n :k}} :k {% :k 2}}
|
|
{* :r {/ :n :k}}
|
|
{+ :k 1} }
|
|
}}}
|
|
{lambda {:n}
|
|
{sweeney.loop :n {A.new 0 :n} :n 2} }}
|
|
-> sweeney
|
|
|
|
{sweeney 21}
|
|
-> gamma = 0.577215664563631 with k=76
|
|
(0.57721566456363 target)
|