1 Jul 14:28
what does when do here? fib(1200000) so slow, erlang cant handle big numbers?
From: Circular Function <circularfunc <at> yahoo.se>
Subject: what does when do here? fib(1200000) so slow, erlang cant handle big numbers?
Newsgroups: gmane.comp.lang.erlang.general
Date: 2008-07-01 12:31:22 GMT
Subject: what does when do here? fib(1200000) so slow, erlang cant handle big numbers?
Newsgroups: gmane.comp.lang.erlang.general
Date: 2008-07-01 12:31:22 GMT
| what does when N>0 do here? seems like no difference. and would you consider this good idiomatic erlang(ofc there is an even faster one that i found, posted at the end)? also, this is linear right? so why does fib(1200000) never finsih? erlang cant handle such big numbers? because 12000 is pretty much instant and 120000 takes a second or so. fib_i(A, _B, 0) -> A; fib_i(A, B, N) when N > 0 -> fib_i(B, A + B, N - 1). fib(N) -> fib_i(0, 1, N). fib_i(A, _B, 0) -> A; fib_i(A, B, N) -> fib_i(B, A + B, N - 1). fib(N) -> fib_i(0, 1, N). fibo3(0, _, Pair) -> Pair; fibo3(N, {Fib1, Fib2}, Pair) when N rem 2 == 0 -> SquareFib1 = Fib1*Fib1, fibo3(N div 2, {2*Fib1*Fib2 - SquareFib1, SquareFib1 + Fib2*Fib2}, Pair); fibo3(N, {FibA1, FibA2}=Pair, {FibB1, FibB2}) -> fibo3(N-1, Pair, {FibA1*FibB2 + FibB1*(FibA2 - FibA1), FibA1*FibB1 + FibA2*FibB2}). |
| Ta semester! - sök efter resor hos Kelkoo. Jämför pris på flygbiljetter och hotellrum: http://www.kelkoo.se/c-169901-resor-biljetter.html |
<div>
<table cellspacing="0" cellpadding="0" border="0"><tr><td valign="top">what does when N>0 do here? seems like no difference.<br>
and would you consider this good idiomatic erlang(ofc there is an even faster one that i found, posted at the end)?<br><br>
also, this is linear right? so why does fib(1200000) never finsih?
erlang cant handle such big numbers? because 12000 is pretty much
instant and 120000 takes a second or so.<br><br>
fib_i(A, _B, 0) -> A;<br>
fib_i(A, B, N) when N > 0 -> fib_i(B, A + B, N - 1).<br>
fib(N) -> fib_i(0, 1, N).<br><br>
fib_i(A, _B, 0) -> A;<br>
fib_i(A, B, N) -> fib_i(B, A + B, N - 1).<br>
fib(N) -> fib_i(0, 1, N).<br><br><br><br><br><br><br>
fibo3(0, _, Pair) -> Pair;<br>
fibo3(N, {Fib1, Fib2}, Pair) when N rem 2 == 0 -><br>
SquareFib1 = Fib1*Fib1,<br>
fibo3(N div 2, {2*Fib1*Fib2 - SquareFib1, SquareFib1 + Fib2*Fib2}, Pair);<br>
fibo3(N, {FibA1, FibA2}=Pair, {FibB1, FibB2}) -><br>
fibo3(N-1, Pair, {FibA1*FibB2 + FibB1*(FibA2 - FibA1), FibA1*FibB1 + FibA2*FibB2}).</td></tr></table>
<br><table><tr><td>Ta semester! - sök efter resor hos Kelkoo. <br>Jämför pris på flygbiljetter och hotellrum: <a href="http://www.kelkoo.se/c-169901-resor-biljetter.html?partnerId=96914051">http://www.kelkoo.se/c-169901-resor-biljetter.html</a>
</td></tr></table>
</div>
RSS Feed