RosettaCodeData/Task/Bernoulli-numbers/Icon/bernoulli-numbers.icon
2015-02-20 09:02:09 -05:00

20 lines
503 B
Text

link "rational"
procedure main(args)
limit := integer(!args) | 60
every b := bernoulli(i := 0 to limit) do
if b.numer > 0 then write(right(i,3),": ",align(rat2str(b),60))
end
procedure bernoulli(n)
(A := table(0))[0] := rational(1,1,1)
every m := 1 to n do {
A[m] := rational(1,m+1,1)
every j := m to 1 by -1 do A[j-1] := mpyrat(rational(j,1,1), subrat(A[j-1],A[j]))
}
return A[0]
end
procedure align(r,n)
return repl(" ",n-find("/",r))||r
end