Как обнаружить переполнение точности мантиссы в GMP, до или после этого? - PullRequest
1 голос
/ 23 января 2009

Вопрос, который я имел в виду , касался мантиссы, а не показателя , и имеет много общего с вопросом, который я задал ранее на этой неделе относительно "пропавших без вести" цифры на сумму двух отрицательных чисел.

Учитывая, что мантисса имеет переменную точность, как можно определить, переполнила ли она текущую настройку точности мантиссы? Или, с проактивной стороны, как можно определить, вероятно ли переполнение точности мантиссы?

С уважением, Брюс.

1 Ответ

2 голосов
/ 30 января 2009

Существует несколько численных методов, позволяющих определить, потеряете ли вы точность, но суть в том, что вам нужно лучше понять определение точности.

-4939600281397002,2812

и

-4939600281397002,2812000000000000

НЕ совпадают.

Когда вы добавляете

-2234,6016114467412141

и

-4939600281397002,2812

вместе, правильный вывод будет иметь только 20 цифр точности, потому что дополнительные 12 цифр в меньшем числе не имеют смысла, учитывая, что 12 цифр аналогичного размера в большем числе неизвестны 1022 *. Вы можете подразумевать, что они равны нулю, но если это так, то вы должны явно объявить их как таковые и использовать систему нумерации, которая может с этим справиться - компьютер плохо разбирается в неявных намерениях.

Что касается определения, когда у вас возникнет эта проблема, все, что вам нужно сделать, это выяснить, имеют ли они одинаковый показатель степени (при условии нормализованной мантиссы +/- 1 или аналогичного двоичного эквивалента). Если они не нормализованы, вам нужно нормализовать их для сравнения или использовать немного более сложное сравнение с показателем степени.

Точность и точность не одно и то же ...

-Adam

...