Я могу придумать другое решение.
Пусть pow(e,x) = pow(10, m) * b
где b
равно >=1
и < 10
, тогда
m = trunc( x * log10(e) )
, где log10(e)
- постоянный коэффициент.
и
b = pow(e,x)/pow(10, m ) = pow(e,x)/pow(e,m/log10(e)) = pow (e,x-m/log10(e))
Таким образом вы получаете:
z = x-m/log10(e)
, который будет в диапазоне от 0 до 3, а затем используйте b = pow(e,z)
, как указано SreevartsR.
и окончательный ответ
b - основание (значащая цифра), а m - мантисса (порядок величины).
это будет быстрее, чем подход SreevartsR, и вам может не потребоваться высокая точность.
Удачи.
Это будет работать даже тогда, когда x меньше 0 и больше отрицательно, в этом случае z будет в диапазоне от 0 до -3, и это будет быстрее, чем любой другой подход.
Поскольку z равно от -3 до 3, и если вам требуются первые 20 значащих цифр, то выражение pow (e, z) может быть оценено до 37 членов только с 3 ^ 37/37! = ~ 3.2e-26.