# Newbie questions

Kostis Sagonas kostis@REDACTED
Sat Mar 25 09:47:11 CET 2006

```Nick Linter wrote:
> I was playing with Erlang for calculation over large numbers and
> discovered some issues:
> 1. math:log fails with "badarg" for big integers.

An example would have helped us understand better what the issue is.
Currently, I get:

Eshell V5.5  (abort with ^G)
1> math:log(43466557686938914862637500386755014010958388901725051132915256476112292920052539720295234060457458057800732025086130975998716977051839168242483814062805283311821051327273518050882075662659534523370463746326528).
480.407

> 3. Let me define the following function:
>   fib(0) -> 0;
>   fib(1) -> 1;
>   fib(N) -> fib(N-1) + fib(N-2).
> I have failed to convert this function _without_ put/get to be able to
> compute even fib(100) within reasonable period of time (I guess I did it
> wrong so that tail recursion was not here). Is there a way to compute
> fib(N), N>=100 without side effects?

Yes. Try:

-module(fib).
-export([fib/1]).
-import(math, [pow/3, sqrt/1]).

fib(N) ->
trunc((1/sqrt(5)) * (pow(((1+sqrt(5))/2),N) - pow(((1-sqrt(5))/2),N))).

Kostis

PS. The performance you are experiencing in your version of fib/1
has nothing to do with tail recursion...

```