Как обнаружить переполнение мантиссы в GMP до или после того, как оно произойдет?

StackOverflow https://stackoverflow.com/questions/472652

Вопрос

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

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

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

Это было полезно?

Решение

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

-4939600281397002.2812

и

-4939600281397002.2812000000000000

НЕ одно и то же число.

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

-2234.6016114467412141

и

-4939600281397002.2812

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

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

Точность и аккуратность - это не одно и то же...

-Адам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top