2013-03-15 3 views
0

Согласно the documentation, операция .exp() в десятичной системе модуля
Пайтона «правильно округляется с помощью ...».Python и дилемма табличной мейкера

Из-за table maker's dilemma, я надеюсь, что это не гарантирован, так как я предпочел бы гарантию
, что это вычисление на нормальном виде ввода с умеренно низкой точностью не будет принимать, например., В год.

Как Python адресует это?
(Это отличается от версии?)

+0

Таким образом, вы были бы счастливы с неправильным ответом быстрее? –

+0

Да. (15 char min) –

+0

Если вам не нужно точное округление и вам нужна производительность, вы, вероятно, не должны использовать тип «Десятичный», поскольку вычисления radix-10 намного медленнее, чем radix-2 на современном оборудовании. Придерживайтесь типа 'float' от Python или если 56 бит недостаточно, сначала отправляйтесь к вещам вроде MPFR/bigfloat. –

ответ

3

В exp() и pow() функции различны.

Объяснение, в котором вы ссылаетесь, указывает на то, что x y не может быть правильно округлено любым известным алгоритмом с ограниченным промежутком времени. Однако это, очевидно, не относится ко всем подмножествам его области. Если мы ограничим область x = 3 и y = 2, то я могу рассказать вам, что такое правильно округленный ответ.

Быстрый поиск Google поворачивает вверх правильно округлены экспоненту в двойной точности арифметике, Дэвид Defour, Флоран де Dinechin, Жан-Мишель Мюллер (CiteSeer, PDF). В статье представлен алгоритм вычисления правильно округленного exp() и обеспечивает наихудшую оценку его времени выполнения.

Это не случай radix = 10, но он показывает, как дилемма столяра не обязательно относится к функции exp().

+0

+1 хороший ответ! –

Смежные вопросы