[erlang-questions] math:pow(10, 1000). ===> exception error: bad argument in an arithmetic expression

Kostis Sagonas <>
Fri Apr 10 09:46:49 CEST 2009


Charles Cui wrote:
> math:pow(10,1000).
> ** exception error: bad argument in an arithmetic expression
>      in function  math:pow/2
>         called as math:pow(10,1000)
> 
> I want to do bigint compute,such as math:pow(a,b).
> Can Erlang do this?

Sure it can.  It's a Turing complete language after all...
You just have to define it yourself.
One possible definition appears below:

-------------------------------------------------------
-module(m).
-export([pow/2]).

-spec pow(integer(), non_neg_integer()) -> integer()
        ; (float(), non_neg_integer()) -> float().

pow(X, N) when is_integer(N), N >= 0 -> pow(X, N, 1).

pow(_, 0, P) -> P;
pow(X, N, A) -> pow(X, N-1, A*X).

---------------------------------------------------------
Eshell V5.7  (abort with ^G)
1> c(m).
{ok,m}
2> m:pow(10, 100).
10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Kostis



More information about the erlang-questions mailing list