Если они не обнаружили лучший способ сделать это, я считаю, что приближенные значения для тригонометрии, логарифмические и экспоненциальные функции (для экспоненциального роста и распада, например), как правило, рассчитаны с использованием арифметических правил и ряд Тейлора разложений для получения приблизительного результата с точностью до требуемой точности. (См. Любую книгу исчисления для получения подробных сведений о степенных сериях, сериях Тейлора и расширениях функций серии Maclaurin.) Обратите внимание, что прошло какое-то время, так как я сделал все это, поэтому я не мог сказать вам, например, точно, как рассчитать количество терминов в серии, которую вы должны включить, гарантирует ошибку, которая достаточно мала, чтобы быть незначительной при вычислении с двойной точностью.
Например, разложение в ряд Тейлора/Маклорена для е^х такова:
+inf [ x^k ] x^2 x^3 x^4 x^5
e^x = SUM [ --- ] = 1 + x + --- + ----- + ------- + --------- + ....
k=0 [ k! ] 2*1 3*2*1 4*3*2*1 5*4*3*2*1
Если взять все условия (к от 0 до бесконечности), это разложение является точным и полным (нет ошибка).
Однако, если вы не принимаете все условия, выходящие на бесконечность, но вы остановитесь после того, как скажете 5 терминов или 50 терминов или что-то еще, вы произведите приблизительный результат, который отличается от фактического значения функции e^x остаток, который довольно легко рассчитать.
Хорошая новость для экспонента является то, что она сходится красиво и члены его разложения по полиномам довольно легко кодировать итеративно, так что вы мощи (повтор, Might - помните, это было каким-то время), даже не нужна чтобы предварительно вычислить, сколько терминов вам необходимо для гарантии вашей ошибки, меньше точности, потому что вы можете проверить размер вклада на каждой итерации и остановиться, когда она станет достаточно близкой к нулю. На практике я не знаю, является ли эта стратегия жизнеспособной или нет - я должен попробовать. Есть важные детали, о которых я давно забыл. Например: точность машины, ошибка машины и ошибка округления и т. Д.
Также обратите внимание, что если вы не используете e^x, но вы делаете рост/распад с другой базой, например 2^x или 10^x , изменяется аппроксимирующая полиномиальная функция.
После первого редактирования этот вопрос до сих пор не ясен. Вы упомянули «алгоритм, который использует показатели» и «алгоритм, используемый для чисел с плавающей запятой с двойной точностью». Алгоритм для чего? Несколько двух таких чисел? Вычислить трехмерную триангуляцию N точек с двойной точностью x-y-z? – Eric 2008-10-03 00:51:36
s/exponents/exponentiation/ – 2008-10-03 03:51:18