function e(a) {
n = 1 << a;
s=1/n;
s++;
for (i=1; i<=a; i++) s=s*s;
return s;
};
function exp(x,a) {
res = e(a);
e2 = res;
for (i=1; i<x; i++) res *= e2;
if (x<0) res = 1/res;
return res;
};
Задавать значения "а" больше 30 не стоит
из-за ошибок округления
Конечно возведение в степень можно
оптимизировать, но лень.
Вот результат вычисления exp(50)
5.18470359486491e+21 //Мой - exp(50,30);
5.1847055285871e+21 //Флэша - Math.exp(50);